more misc fixes, yay

This commit is contained in:
Ellpeck 2020-01-23 19:20:47 +01:00
parent 136c125f2c
commit a208887b25
34 changed files with 445 additions and 764 deletions

View file

@ -323,10 +323,13 @@ public final class Helper {
for (Field entry : clazz.getFields()) { for (Field entry : clazz.getFields()) {
if (!Modifier.isStatic(entry.getModifiers())) if (!Modifier.isStatic(entry.getModifiers()))
continue; continue;
String location = entry.getName().toLowerCase(Locale.ROOT); ResourceLocation location = new ResourceLocation(NaturesAura.MOD_ID, entry.getName().toLowerCase(Locale.ROOT));
T value = registry.getValue(new ResourceLocation(NaturesAura.MOD_ID, location)); if (!registry.containsKey(location)) {
NaturesAura.LOGGER.fatal("Couldn't find entry named " + location + " in registry " + registry.getRegistryName());
continue;
}
try { try {
entry.set(null, value); entry.set(null, registry.getValue(location));
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
NaturesAura.LOGGER.error(e); NaturesAura.LOGGER.error(e);
} }

View file

@ -1,7 +1,6 @@
package de.ellpeck.naturesaura.blocks; package de.ellpeck.naturesaura.blocks;
import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.NaturesAuraAPI;
import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities;
import de.ellpeck.naturesaura.blocks.tiles.TileEntityAncientLeaves; import de.ellpeck.naturesaura.blocks.tiles.TileEntityAncientLeaves;
import de.ellpeck.naturesaura.reg.*; import de.ellpeck.naturesaura.reg.*;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@ -16,7 +15,6 @@ import net.minecraft.world.IBlockReader;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Random; import java.util.Random;
@ -27,6 +25,7 @@ public class BlockAncientLeaves extends LeavesBlock implements
public BlockAncientLeaves() { public BlockAncientLeaves() {
super(ModBlocks.prop(Material.LEAVES, MaterialColor.PINK)); super(ModBlocks.prop(Material.LEAVES, MaterialColor.PINK));
ModRegistry.add(this); ModRegistry.add(this);
ModRegistry.add(new ModTileType<>(TileEntityAncientLeaves::new, this));
} }
@Override @Override
@ -34,32 +33,10 @@ public class BlockAncientLeaves extends LeavesBlock implements
return "ancient_leaves"; return "ancient_leaves";
} }
public void onInit(FMLCommonSetupEvent event) {
//GameRegistry.registerTileEntity(TileEntityAncientLeaves.class, new ResourceLocation(NaturesAura.MOD_ID, "ancient_leaves"));
}
/* Appears to be handled already somewhere by super
@Override
public void beginLeaveDecay(BlockState state, IWorldReader world, BlockPos pos) {
if (!state.get(DISTANCE).intValue() && state.getValue(DECAYABLE)) {
world.getChunk(pos).setBlockState(pos, state.with(CHECK_DECAY, true), false);
}
}
*/
/* // Appears to auto remove TE during setting of the state by the world
@Override
public void breakBlock(World worldIn, BlockPos pos, BlockState state) {
super.breakBlock(worldIn, pos, state);
worldIn.removeTileEntity(pos);
}
*/
@Nullable @Nullable
@Override @Override
public TileEntity createTileEntity(BlockState state, IBlockReader world) { public TileEntity createTileEntity(BlockState state, IBlockReader world) {
return ModTileEntities.ANCIENT_LEAVES.create(); return new TileEntityAncientLeaves();
} }
@Override @Override

View file

@ -13,6 +13,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld; import net.minecraft.world.IWorld;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.storage.loot.LootContext; import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootParameters; import net.minecraft.world.storage.loot.LootParameters;
@ -97,13 +98,13 @@ public class BlockContainerImpl extends ContainerBlock implements IModItem, IMod
((TileEntityImpl) tile).loadDataOnPlace(stack); ((TileEntityImpl) tile).loadDataOnPlace(stack);
} }
/*@Override TODO weird redstone stuff @Override
public void onBlockAdded(World worldIn, BlockPos pos, BlockState state) { public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
this.updateRedstoneState(worldIn, pos); this.updateRedstoneState(worldIn, pos);
} }
@Override @Override
public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) { public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
this.updateRedstoneState(worldIn, pos); this.updateRedstoneState(worldIn, pos);
} }
@ -114,15 +115,15 @@ public class BlockContainerImpl extends ContainerBlock implements IModItem, IMod
TileEntityImpl impl = (TileEntityImpl) tile; TileEntityImpl impl = (TileEntityImpl) tile;
int newPower = world.getRedstonePowerFromNeighbors(pos); int newPower = world.getRedstonePowerFromNeighbors(pos);
if (impl.redstonePower != newPower) if (impl.redstonePower != newPower)
world.scheduleUpdate(pos, this, this.tickRate(world)); world.getPendingBlockTicks().scheduleTick(pos, this, this.tickRate(world));
} }
} }
} }
@Override @Override
public int tickRate(World worldIn) { public int tickRate(IWorldReader worldIn) {
return 4; return 4;
}*/ }
@Override @Override
public void tick(BlockState state, World worldIn, BlockPos pos, Random random) { public void tick(BlockState state, World worldIn, BlockPos pos, Random random) {

View file

@ -79,14 +79,14 @@ public class BlockDimensionRail extends AbstractRailBlock implements IModItem, I
if (!this.canUseHere(world.getDimension().getType())) if (!this.canUseHere(world.getDimension().getType()))
return; return;
AxisAlignedBB box = cart.getCollisionBoundingBox(); AxisAlignedBB box = cart.getBoundingBox();
PacketHandler.sendToAllAround(world, pos, 32, new PacketParticles((float) box.minX, (float) box.minY, (float) box.minZ, 25, (int) ((box.maxX - box.minX) * 100F), (int) ((box.maxY - box.minY) * 100F), (int) ((box.maxZ - box.minZ) * 100F))); PacketHandler.sendToAllAround(world, pos, 32, new PacketParticles((float) box.minX, (float) box.minY, (float) box.minZ, 25, (int) ((box.maxX - box.minX) * 100F), (int) ((box.maxY - box.minY) * 100F), (int) ((box.maxZ - box.minZ) * 100F)));
world.playSound(null, pos, SoundEvents.ENTITY_ENDERMAN_TELEPORT, SoundCategory.BLOCKS, 1F, 1F); world.playSound(null, pos, SoundEvents.ENTITY_ENDERMAN_TELEPORT, SoundCategory.BLOCKS, 1F, 1F);
BlockPos goalCoords = this.getGoalCoords(world, pos); BlockPos goalCoords = this.getGoalCoords(world, pos);
cart.changeDimension(DimensionType.getById(this.goalDim)); cart.changeDimension(DimensionType.getById(this.goalDim));
// (newWorld, entity, yaw) -> entity.moveToBlockPosAndAngles(goalCoords, yaw, entity.rotationPitch) cart.moveToBlockPosAndAngles(goalCoords, cart.rotationYaw, cart.rotationPitch);
BlockPos spot = IAuraChunk.getHighestSpot(world, pos, 35, pos); BlockPos spot = IAuraChunk.getHighestSpot(world, pos, 35, pos);
IAuraChunk.getAuraChunk(world, spot).drainAura(spot, 50000); IAuraChunk.getAuraChunk(world, spot).drainAura(spot, 50000);

View file

@ -1,18 +1,24 @@
package de.ellpeck.naturesaura.blocks; package de.ellpeck.naturesaura.blocks;
import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover; import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover;
import de.ellpeck.naturesaura.blocks.tiles.render.RenderGeneratorLimitRemover;
import de.ellpeck.naturesaura.reg.ITESRProvider;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.util.Tuple;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class BlockGeneratorLimitRemover extends BlockContainerImpl /*implements ITESRProvider*/ { public class BlockGeneratorLimitRemover extends BlockContainerImpl implements ITESRProvider {
public BlockGeneratorLimitRemover() { public BlockGeneratorLimitRemover() {
super("generator_limit_remover", TileEntityGeneratorLimitRemover::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE)); super("generator_limit_remover", TileEntityGeneratorLimitRemover::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2F).sound(SoundType.STONE));
} }
/*@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public Tuple<Class, TileEntityRenderer> getTESR() { public Tuple<Class, TileEntityRenderer> getTESR() {
return new Tuple<>(TileEntityGeneratorLimitRemover.class, new RenderGeneratorLimitRemover()); return new Tuple<>(TileEntityGeneratorLimitRemover.class, new RenderGeneratorLimitRemover());
}*/ }
} }

View file

@ -3,24 +3,30 @@ package de.ellpeck.naturesaura.blocks;
import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.NaturesAuraAPI;
import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk; import de.ellpeck.naturesaura.api.aura.chunk.IAuraChunk;
import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator; import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator;
import de.ellpeck.naturesaura.blocks.tiles.render.RenderProjectileGenerator;
import de.ellpeck.naturesaura.packet.PacketHandler; import de.ellpeck.naturesaura.packet.PacketHandler;
import de.ellpeck.naturesaura.packet.PacketParticles; import de.ellpeck.naturesaura.packet.PacketParticles;
import de.ellpeck.naturesaura.reg.ITESRProvider;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvents; import net.minecraft.util.SoundEvents;
import net.minecraft.util.Tuple;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
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.event.entity.ProjectileImpactEvent; import net.minecraftforge.event.entity.ProjectileImpactEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
public class BlockProjectileGenerator extends BlockContainerImpl/* implements ITESRProvider*/ { public class BlockProjectileGenerator extends BlockContainerImpl implements ITESRProvider {
public BlockProjectileGenerator() { public BlockProjectileGenerator() {
super("projectile_generator", TileEntityProjectileGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE)); super("projectile_generator", TileEntityProjectileGenerator::new, ModBlocks.prop(Material.ROCK).hardnessAndResistance(2.5F).sound(SoundType.STONE));
@ -64,9 +70,9 @@ public class BlockProjectileGenerator extends BlockContainerImpl/* implements IT
event.setCanceled(true); event.setCanceled(true);
} }
/* @Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public Tuple<Class, TileEntityRenderer> getTESR() { public Tuple<Class, TileEntityRenderer> getTESR() {
return new Tuple<>(TileEntityProjectileGenerator.class, new RenderProjectileGenerator()); return new Tuple<>(TileEntityProjectileGenerator.class, new RenderProjectileGenerator());
}*/ }
} }

View file

@ -35,7 +35,7 @@ public final class ModBlocks {
public static Block HOPPER_UPGRADE; public static Block HOPPER_UPGRADE;
public static Block FIELD_CREATOR; public static Block FIELD_CREATOR;
public static Block OAK_GENERATOR; public static Block OAK_GENERATOR;
public static Block INFUSED_IRON; public static Block INFUSED_IRON_BLOCK;
public static Block OFFERING_TABLE; public static Block OFFERING_TABLE;
public static Block PICKUP_STOPPER; public static Block PICKUP_STOPPER;
public static Block SPAWN_LAMP; public static Block SPAWN_LAMP;

View file

@ -1,16 +1,12 @@
/* TODO this render thing
package de.ellpeck.naturesaura.blocks.tiles.render; package de.ellpeck.naturesaura.blocks.tiles.render;
import com.mojang.blaze3d.platform.GLX;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.NaturesAura;
import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover; import de.ellpeck.naturesaura.blocks.tiles.TileEntityGeneratorLimitRemover;
import de.ellpeck.naturesaura.blocks.tiles.TileEntityImpl; import de.ellpeck.naturesaura.blocks.tiles.TileEntityImpl;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.BlockModelRenderer;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.entity.model.RendererModel;
import net.minecraft.client.renderer.model.Model; import net.minecraft.client.renderer.model.Model;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -24,7 +20,7 @@ public class RenderGeneratorLimitRemover extends TileEntityRenderer<TileEntityGe
private final ModelLimitRemoverGlint model = new ModelLimitRemoverGlint(); private final ModelLimitRemoverGlint model = new ModelLimitRemoverGlint();
@Override @Override
public void render(TileEntityGeneratorLimitRemover te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { public void render(TileEntityGeneratorLimitRemover te, double x, double y, double z, float partialTicks, int destroyStage) {
TileEntity above = te.getWorld().getTileEntity(te.getPos().up()); TileEntity above = te.getWorld().getTileEntity(te.getPos().up());
if (above instanceof TileEntityImpl && ((TileEntityImpl) above).wantsLimitRemover()) { if (above instanceof TileEntityImpl && ((TileEntityImpl) above).wantsLimitRemover()) {
this.renderGlint(x, y + 1, z); this.renderGlint(x, y + 1, z);
@ -42,10 +38,10 @@ public class RenderGeneratorLimitRemover extends TileEntityRenderer<TileEntityGe
int brightness = 15 << 20 | 15 << 4; int brightness = 15 << 20 | 15 << 4;
int j = brightness % 65536; int j = brightness % 65536;
int k = brightness / 65536; int k = brightness / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j, (float) k); GLX.glMultiTexCoord2f(GLX.GL_TEXTURE1, (float) j, (float) k);
float alpha = ((float) Math.sin(Minecraft.getSystemTime() / 800D) + 1F) / 2F; float alpha = ((float) Math.sin(System.currentTimeMillis() / 800D) + 1F) / 2F;
GlStateManager.color4f(alpha, alpha, alpha, alpha); GlStateManager.color4f(alpha, alpha, alpha, alpha);
GlStateManager.translatef(x - 0.001F, y + 1 + 0.001F, z + 1 + 0.001F); GlStateManager.translated(x - 0.001F, y + 1 + 0.001F, z + 1 + 0.001F);
GlStateManager.rotatef(180F, 1, 0, 0); GlStateManager.rotatef(180F, 1, 0, 0);
GlStateManager.scalef(1.002F, 1.002F, 1.002F); GlStateManager.scalef(1.002F, 1.002F, 1.002F);
this.bindTexture(RES); this.bindTexture(RES);
@ -59,10 +55,10 @@ public class RenderGeneratorLimitRemover extends TileEntityRenderer<TileEntityGe
private static class ModelLimitRemoverGlint extends Model { private static class ModelLimitRemoverGlint extends Model {
private final BlockModelRenderer box; private final RendererModel box;
public ModelLimitRemoverGlint() { public ModelLimitRemoverGlint() {
this.box = new BlockModelRenderer(this, 0, 0); this.box = new RendererModel(this, 0, 0);
this.box.setTextureSize(64, 64); this.box.setTextureSize(64, 64);
this.box.addBox(0, 0, 0, 16, 16, 16); this.box.addBox(0, 0, 0, 16, 16, 16);
} }
@ -72,4 +68,3 @@ public class RenderGeneratorLimitRemover extends TileEntityRenderer<TileEntityGe
} }
} }
} }
*/

View file

@ -1,12 +1,10 @@
/* TODO render projectile generator
package de.ellpeck.naturesaura.blocks.tiles.render; package de.ellpeck.naturesaura.blocks.tiles.render;
import com.mojang.blaze3d.platform.GlStateManager;
import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.NaturesAura;
import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator; import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.model.RendererModel;
import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.model.Model;
import com.mojang.blaze3d.platform.GlStateManager;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@ -19,32 +17,32 @@ public class RenderProjectileGenerator extends TileEntityRenderer<TileEntityProj
private final ModelOverlay model = new ModelOverlay(); private final ModelOverlay model = new ModelOverlay();
@Override @Override
public void render(TileEntityProjectileGenerator te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { public void render(TileEntityProjectileGenerator te, double x, double y, double z, float partialTicks, int destroyStage) {
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.translate(x, y, z); GlStateManager.translated(x, y, z);
if (te.nextSide == Direction.NORTH) { if (te.nextSide == Direction.NORTH) {
GlStateManager.rotate(270, 0, 1, 0); GlStateManager.rotatef(270, 0, 1, 0);
GlStateManager.translate(-0.001F, 0, -1); GlStateManager.translatef(-0.001F, 0, -1);
} else if (te.nextSide == Direction.EAST) { } else if (te.nextSide == Direction.EAST) {
GlStateManager.rotate(180, 0, 1, 0); GlStateManager.rotatef(180, 0, 1, 0);
GlStateManager.translate(-1.001F, 0, -1); GlStateManager.translatef(-1.001F, 0, -1);
} else if (te.nextSide == Direction.SOUTH) { } else if (te.nextSide == Direction.SOUTH) {
GlStateManager.rotate(90, 0, 1, 0); GlStateManager.rotatef(90, 0, 1, 0);
GlStateManager.translate(-1.001F, 0, 0); GlStateManager.translatef(-1.001F, 0, 0);
} else { } else {
GlStateManager.translate(-0.001F, 0, 0); GlStateManager.translatef(-0.001F, 0, 0);
} }
this.bindTexture(RES); this.bindTexture(RES);
this.model.render(); this.model.render();
GlStateManager.popMatrix(); GlStateManager.popMatrix();
} }
private static class ModelOverlay extends ModelBase { private static class ModelOverlay extends Model {
private final ModelRenderer box; private final RendererModel box;
public ModelOverlay() { public ModelOverlay() {
this.box = new ModelRenderer(this, 0, 0); this.box = new RendererModel(this, 0, 0);
this.box.setTextureSize(64, 64); this.box.setTextureSize(64, 64);
this.box.addBox(0, 0, 0, 16, 16, 16); this.box.addBox(0, 0, 0, 16, 16, 16);
} }
@ -54,4 +52,3 @@ public class RenderProjectileGenerator extends TileEntityRenderer<TileEntityProj
} }
} }
} }
*/

View file

@ -2,13 +2,19 @@ package de.ellpeck.naturesaura.compat.jei;
import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.NaturesAura;
import de.ellpeck.naturesaura.api.NaturesAuraAPI; import de.ellpeck.naturesaura.api.NaturesAuraAPI;
import de.ellpeck.naturesaura.api.aura.container.IAuraContainer;
import de.ellpeck.naturesaura.blocks.ModBlocks; import de.ellpeck.naturesaura.blocks.ModBlocks;
import de.ellpeck.naturesaura.items.AuraBottle;
import de.ellpeck.naturesaura.items.EffectPowder;
import de.ellpeck.naturesaura.items.ModItems;
import mezz.jei.api.IModPlugin; import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin; import mezz.jei.api.JeiPlugin;
import mezz.jei.api.helpers.IGuiHelper; import mezz.jei.api.helpers.IGuiHelper;
import mezz.jei.api.ingredients.subtypes.ISubtypeInterpreter;
import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration;
import mezz.jei.api.registration.IRecipeRegistration; import mezz.jei.api.registration.IRecipeRegistration;
import mezz.jei.api.registration.ISubtypeRegistration;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@ -36,6 +42,21 @@ public class JEINaturesAuraPlugin implements IModPlugin {
); );
} }
@Override
public void registerItemSubtypes(ISubtypeRegistration registration) {
registration.registerSubtypeInterpreter(ModItems.EFFECT_POWDER, stack -> EffectPowder.getEffect(stack).toString());
registration.registerSubtypeInterpreter(ModItems.AURA_BOTTLE, stack -> AuraBottle.getType(stack).getName().toString());
ISubtypeInterpreter auraInterpreter = stack -> {
IAuraContainer container = stack.getCapability(NaturesAuraAPI.capAuraContainer).orElse(null);
if (container != null)
return String.valueOf(container.getStoredAura());
return ISubtypeInterpreter.NONE;
};
registration.registerSubtypeInterpreter(ModItems.AURA_CACHE, auraInterpreter);
registration.registerSubtypeInterpreter(ModItems.AURA_TROVE, auraInterpreter);
}
@Override @Override
public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) {
registration.addRecipeCatalyst(new ItemStack(ModBlocks.GOLD_POWDER), TREE_RITUAL); registration.addRecipeCatalyst(new ItemStack(ModBlocks.GOLD_POWDER), TREE_RITUAL);

View file

@ -27,6 +27,7 @@ import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.network.NetworkHooks;
import java.util.List; import java.util.List;
@ -83,14 +84,14 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable {
} }
private void addToPowderList() { private void addToPowderList() {
if (!this.isAddedToWorld()) if (!this.isAddedToWorld() || this.getInhibitedEffect() == null)
return; return;
List<Tuple<Vec3d, Integer>> powders = this.getPowderList(); List<Tuple<Vec3d, Integer>> powders = this.getPowderList();
powders.add(new Tuple<>(this.getPositionVector(), this.getAmount())); powders.add(new Tuple<>(this.getPositionVector(), this.getAmount()));
} }
private void removeFromPowderList() { private void removeFromPowderList() {
if (!this.isAddedToWorld()) if (!this.isAddedToWorld() || this.getInhibitedEffect() == null)
return; return;
List<Tuple<Vec3d, Integer>> powders = this.getPowderList(); List<Tuple<Vec3d, Integer>> powders = this.getPowderList();
Vec3d pos = this.getPositionVector(); Vec3d pos = this.getPositionVector();
@ -145,7 +146,7 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable {
@Override @Override
public IPacket<?> createSpawnPacket() { public IPacket<?> createSpawnPacket() {
return null; return NetworkHooks.getEntitySpawningPacket(this);
} }
@Override @Override
@ -169,7 +170,10 @@ public class EntityEffectInhibitor extends Entity implements IVisualizable {
} }
public ResourceLocation getInhibitedEffect() { public ResourceLocation getInhibitedEffect() {
return new ResourceLocation(this.dataManager.get(INHIBITED_EFFECT)); String effect = this.dataManager.get(INHIBITED_EFFECT);
if (effect == null || effect.isEmpty())
return null;
return new ResourceLocation(effect);
} }
public void setColor(int color) { public void setColor(int color) {

View file

@ -14,6 +14,7 @@ import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.INBT; import net.minecraft.nbt.INBT;
import net.minecraft.nbt.ListNBT; import net.minecraft.nbt.ListNBT;
import net.minecraft.nbt.LongNBT; import net.minecraft.nbt.LongNBT;
import net.minecraft.network.IPacket;
import net.minecraft.util.DamageSource; import net.minecraft.util.DamageSource;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@ -23,6 +24,7 @@ import net.minecraft.world.GameRules;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.dimension.DimensionType;
import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fml.network.NetworkHooks;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@ -102,7 +104,7 @@ public class EntityMoverMinecart extends AbstractMinecartEntity {
public void killMinecart(DamageSource source) { public void killMinecart(DamageSource source) {
this.remove(); this.remove();
if (this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS)) if (this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS))
this.entityDropItem(new ItemStack(ModItems.MOVER_MINECART), 0); this.entityDropItem(new ItemStack(ModItems.MOVER_CART), 0);
} }
@Override @Override
@ -154,12 +156,12 @@ public class EntityMoverMinecart extends AbstractMinecartEntity {
@Override @Override
public ItemStack getCartItem() { public ItemStack getCartItem() {
return new ItemStack(ModItems.MOVER_MINECART); return new ItemStack(ModItems.MOVER_CART);
} }
@Override @Override
public ItemStack getPickedResult(RayTraceResult target) { public ItemStack getPickedResult(RayTraceResult target) {
return new ItemStack(ModItems.MOVER_MINECART); return new ItemStack(ModItems.MOVER_CART);
} }
@Override @Override
@ -173,4 +175,8 @@ public class EntityMoverMinecart extends AbstractMinecartEntity {
this.setMotion(motion.x * 0.99F, 0, motion.z * 0.99F); this.setMotion(motion.x * 0.99F, 0, motion.z * 0.99F);
} }
@Override
public IPacket<?> createSpawnPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
} }

View file

@ -6,6 +6,6 @@ import net.minecraftforge.registries.ObjectHolder;
@SuppressWarnings("FieldNamingConvention") @SuppressWarnings("FieldNamingConvention")
public final class ModEntities { public final class ModEntities {
public static EntityType<EntityMoverMinecart> MOVER_MINECART; public static EntityType<EntityMoverMinecart> MOVER_CART;
public static EntityType<EntityEffectInhibitor> EFFECT_INHIBITOR; public static EntityType<EntityEffectInhibitor> EFFECT_INHIBITOR;
} }

View file

@ -1,14 +1,13 @@
/* TODO minecart model
package de.ellpeck.naturesaura.entities.render; package de.ellpeck.naturesaura.entities.render;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.NaturesAura;
import de.ellpeck.naturesaura.entities.EntityMoverMinecart; import de.ellpeck.naturesaura.entities.EntityMoverMinecart;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.MinecartRenderer; import net.minecraft.client.renderer.entity.MinecartRenderer;
import net.minecraft.client.renderer.entity.model.RendererModel;
import net.minecraft.client.renderer.model.Model;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
public class RenderMoverMinecart extends MinecartRenderer<EntityMoverMinecart> { public class RenderMoverMinecart extends MinecartRenderer<EntityMoverMinecart> {
@ -23,19 +22,19 @@ public class RenderMoverMinecart extends MinecartRenderer<EntityMoverMinecart> {
@Override @Override
protected void renderCartContents(EntityMoverMinecart cart, float partialTicks, BlockState state) { protected void renderCartContents(EntityMoverMinecart cart, float partialTicks, BlockState state) {
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.translate(0, 22 / 16F, 0); GlStateManager.translatef(0, 22 / 16F, 0);
GlStateManager.rotate(180, 1, 0, 0); GlStateManager.rotatef(180, 1, 0, 0);
this.bindTexture(RES); this.bindTexture(RES);
this.model.render(); this.model.render();
GlStateManager.popMatrix(); GlStateManager.popMatrix();
} }
private static class ModelMoverMinecart extends ModelBase { private static class ModelMoverMinecart extends Model {
private final ModelRenderer box; private final RendererModel box;
public ModelMoverMinecart() { public ModelMoverMinecart() {
this.box = new ModelRenderer(this, 0, 0); this.box = new RendererModel(this, 0, 0);
this.box.setTextureSize(64, 64); this.box.setTextureSize(64, 64);
this.box.addBox(0, 0, 0, 16, 24, 16); this.box.addBox(0, 0, 0, 16, 24, 16);
} }
@ -45,4 +44,3 @@ public class RenderMoverMinecart extends MinecartRenderer<EntityMoverMinecart> {
} }
} }
} }
*/

View file

@ -58,7 +58,7 @@ public class AuraBottle extends ItemImpl implements IColorProvidingItem {
@SubscribeEvent @SubscribeEvent
public void onRightClick(PlayerInteractEvent.RightClickItem event) { public void onRightClick(PlayerInteractEvent.RightClickItem event) {
ItemStack held = event.getItemStack(); ItemStack held = event.getItemStack();
if (held.isEmpty() || held.getItem() != ModItems.BOTTLE_TWO) if (held.isEmpty() || held.getItem() != ModItems.BOTTLE_TWO_THE_REBOTTLING)
return; return;
PlayerEntity player = event.getPlayer(); PlayerEntity player = event.getPlayer();
RayTraceResult ray = rayTrace(player.world, player, RayTraceContext.FluidMode.NONE); RayTraceResult ray = rayTrace(player.world, player, RayTraceContext.FluidMode.NONE);
@ -96,7 +96,7 @@ public class AuraBottle extends ItemImpl implements IColorProvidingItem {
@Override @Override
public ITextComponent getDisplayName(ItemStack stack) { public ITextComponent getDisplayName(ItemStack stack) {
return new TranslationTextComponent(stack.getTranslationKey() + "." + getType(stack).getName() + ".name"); return new TranslationTextComponent(stack.getTranslationKey() + "." + getType(stack).getName());
} }
public static IAuraType getType(ItemStack stack) { public static IAuraType getType(ItemStack stack) {

View file

@ -11,7 +11,6 @@ import net.minecraft.item.ItemUseContext;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.NonNullList; import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.util.text.TranslationTextComponent;
@ -29,10 +28,9 @@ public class EffectPowder extends ItemImpl implements IColorProvidingItem {
public ActionResultType onItemUse(ItemUseContext context) { public ActionResultType onItemUse(ItemUseContext context) {
World world = context.getWorld(); World world = context.getWorld();
if (!world.isRemote) { if (!world.isRemote) {
BlockPos pos = context.getPos();
Vec3d hit = context.getHitVec(); Vec3d hit = context.getHitVec();
ItemStack stack = context.getPlayer().getHeldItem(context.getHand()); ItemStack stack = context.getPlayer().getHeldItem(context.getHand());
EntityEffectInhibitor.place(world, stack, pos.getX() + hit.x, pos.getY() + hit.y + 1, pos.getZ() + hit.z); EntityEffectInhibitor.place(world, stack, hit.x, hit.y + 1, hit.z);
stack.setCount(0); stack.setCount(0);
} }
return ActionResultType.SUCCESS; return ActionResultType.SUCCESS;
@ -51,7 +49,7 @@ public class EffectPowder extends ItemImpl implements IColorProvidingItem {
@Override @Override
public ITextComponent getDisplayName(ItemStack stack) { public ITextComponent getDisplayName(ItemStack stack) {
return new TranslationTextComponent(this.getTranslationKey(stack) + "." + getEffect(stack) + ".name"); return new TranslationTextComponent(this.getTranslationKey(stack) + "." + getEffect(stack));
} }
public static ResourceLocation getEffect(ItemStack stack) { public static ResourceLocation getEffect(ItemStack stack) {

View file

@ -1,20 +1,18 @@
package de.ellpeck.naturesaura.items; package de.ellpeck.naturesaura.items;
import de.ellpeck.naturesaura.NaturesAura;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraftforge.registries.ObjectHolder;
@SuppressWarnings("FieldNamingConvention") @SuppressWarnings("FieldNamingConvention")
public final class ModItems { public final class ModItems {
public static Item INFUSED_PICKAXE; public static Item INFUSED_IRON_PICKAXE;
public static Item INFUSED_AXE; public static Item INFUSED_IRON_AXE;
public static Item INFUSED_SHOVEL; public static Item INFUSED_IRON_SHOVEL;
public static Item INFUSED_HOE; public static Item INFUSED_IRON_HOE;
public static Item INFUSED_SWORD; public static Item INFUSED_IRON_SWORD;
public static Item INFUSED_HELMET; public static Item INFUSED_IRON_HELMET;
public static Item INFUSED_CHEST; public static Item INFUSED_IRON_CHEST;
public static Item INFUSED_PANTS; public static Item INFUSED_IRON_PANTS;
public static Item INFUSED_SHOES; public static Item INFUSED_IRON_SHOES;
public static Item EYE; public static Item EYE;
public static Item EYE_IMPROVED; public static Item EYE_IMPROVED;
public static Item GOLD_FIBER; public static Item GOLD_FIBER;
@ -26,14 +24,14 @@ public final class ModItems {
public static Item AURA_TROVE; public static Item AURA_TROVE;
public static Item SHOCKWAVE_CREATOR; public static Item SHOCKWAVE_CREATOR;
public static Item MULTIBLOCK_MAKER; public static Item MULTIBLOCK_MAKER;
public static Item BOTTLE_TWO; public static Item BOTTLE_TWO_THE_REBOTTLING;
public static Item AURA_BOTTLE; public static Item AURA_BOTTLE;
public static Item FARMING_STENCIL; public static Item FARMING_STENCIL;
public static Item SKY_INGOT; public static Item SKY_INGOT;
public static Item CALLING_SPIRIT; public static Item CALLING_SPIRIT;
public static Item EFFECT_POWDER; public static Item EFFECT_POWDER;
public static Item BIRTH_SPIRIT; public static Item BIRTH_SPIRIT;
public static Item MOVER_MINECART; public static Item MOVER_CART;
public static Item RANGE_VISUALIZER; public static Item RANGE_VISUALIZER;
public static Item CLOCK_HAND; public static Item CLOCK_HAND;
public static Item TOKEN_JOY; public static Item TOKEN_JOY;

View file

@ -25,7 +25,7 @@ public class MoverMinecart extends ItemImpl {
BlockPos pos = context.getPos(); BlockPos pos = context.getPos();
if (AbstractRailBlock.isRail(world.getBlockState(pos))) { if (AbstractRailBlock.isRail(world.getBlockState(pos))) {
if (!world.isRemote) { if (!world.isRemote) {
AbstractMinecartEntity cart = new EntityMoverMinecart(ModEntities.MOVER_MINECART, world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5); AbstractMinecartEntity cart = new EntityMoverMinecart(ModEntities.MOVER_CART, world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5);
world.addEntity(cart); world.addEntity(cart);
} }
context.getPlayer().getHeldItem(context.getHand()).shrink(1); context.getPlayer().getHeldItem(context.getHand()).shrink(1);

View file

@ -63,7 +63,7 @@ public class Armor extends ArmorItem implements IModItem, IModelProvider {
public static boolean isFullSetEquipped(LivingEntity entity, int setIndex) { public static boolean isFullSetEquipped(LivingEntity entity, int setIndex) {
if (sets == null) { if (sets == null) {
sets = new ArrayList<>(); sets = new ArrayList<>();
sets.add(new Item[]{ModItems.INFUSED_SHOES, ModItems.INFUSED_PANTS, ModItems.INFUSED_CHEST, ModItems.INFUSED_HELMET}); sets.add(new Item[]{ModItems.INFUSED_IRON_SHOES, ModItems.INFUSED_IRON_PANTS, ModItems.INFUSED_IRON_CHEST, ModItems.INFUSED_IRON_HELMET});
} }
Item[] set = sets.get(setIndex); Item[] set = sets.get(setIndex);

View file

@ -32,7 +32,7 @@ public class Axe extends AxeItem implements IModItem, IModelProvider {
@Override @Override
public float getDestroySpeed(ItemStack stack, BlockState state) { public float getDestroySpeed(ItemStack stack, BlockState state) {
if (this == ModItems.INFUSED_AXE && state.getMaterial() == Material.LEAVES) { if (this == ModItems.INFUSED_IRON_AXE && state.getMaterial() == Material.LEAVES) {
return this.efficiency; return this.efficiency;
} else { } else {
return super.getDestroySpeed(stack, state); return super.getDestroySpeed(stack, state);
@ -42,7 +42,7 @@ public class Axe extends AxeItem implements IModItem, IModelProvider {
@Nullable @Nullable
@Override @Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) {
if (this == ModItems.INFUSED_AXE) if (this == ModItems.INFUSED_IRON_AXE)
return Helper.makeRechargeProvider(stack, true); return Helper.makeRechargeProvider(stack, true);
else return null; else return null;
} }

View file

@ -31,7 +31,7 @@ public class Hoe extends HoeItem implements IModItem, IModelProvider {
public ActionResultType onItemUse(ItemUseContext context) { public ActionResultType onItemUse(ItemUseContext context) {
World world = context.getWorld(); World world = context.getWorld();
ActionResultType result = super.onItemUse(context); ActionResultType result = super.onItemUse(context);
if (!world.isRemote && result == ActionResultType.SUCCESS && this == ModItems.INFUSED_HOE) { if (!world.isRemote && result == ActionResultType.SUCCESS && this == ModItems.INFUSED_IRON_HOE) {
ItemStack seed = ItemStack.EMPTY; ItemStack seed = ItemStack.EMPTY;
Random random = world.getRandom(); Random random = world.getRandom();
BlockPos pos = context.getPos(); BlockPos pos = context.getPos();
@ -64,7 +64,7 @@ public class Hoe extends HoeItem implements IModItem, IModelProvider {
@Nullable @Nullable
@Override @Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) {
if (this == ModItems.INFUSED_HOE) if (this == ModItems.INFUSED_IRON_HOE)
return Helper.makeRechargeProvider(stack, true); return Helper.makeRechargeProvider(stack, true);
else return null; else return null;
} }

View file

@ -38,7 +38,7 @@ public class Pickaxe extends PickaxeItem implements IModItem, IModelProvider {
@Override @Override
public ActionResultType onItemUse(ItemUseContext context) { public ActionResultType onItemUse(ItemUseContext context) {
if (this == ModItems.INFUSED_PICKAXE) { if (this == ModItems.INFUSED_IRON_PICKAXE) {
PlayerEntity player = context.getPlayer(); PlayerEntity player = context.getPlayer();
World world = context.getWorld(); World world = context.getWorld();
BlockPos pos = context.getPos(); BlockPos pos = context.getPos();
@ -59,7 +59,7 @@ public class Pickaxe extends PickaxeItem implements IModItem, IModelProvider {
@Nullable @Nullable
@Override @Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) {
if (this == ModItems.INFUSED_PICKAXE) if (this == ModItems.INFUSED_IRON_PICKAXE)
return Helper.makeRechargeProvider(stack, true); return Helper.makeRechargeProvider(stack, true);
else return null; else return null;
} }

View file

@ -36,7 +36,7 @@ public class Shovel extends ShovelItem implements IModItem, IModelProvider {
@Override @Override
public ActionResultType onItemUse(ItemUseContext context) { public ActionResultType onItemUse(ItemUseContext context) {
if (this == ModItems.INFUSED_SHOVEL) { if (this == ModItems.INFUSED_IRON_SHOVEL) {
PlayerEntity player = context.getPlayer(); PlayerEntity player = context.getPlayer();
World world = context.getWorld(); World world = context.getWorld();
BlockPos pos = context.getPos(); BlockPos pos = context.getPos();
@ -85,7 +85,7 @@ public class Shovel extends ShovelItem implements IModItem, IModelProvider {
@Nullable @Nullable
@Override @Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) {
if (this == ModItems.INFUSED_SHOVEL) if (this == ModItems.INFUSED_IRON_SHOVEL)
return Helper.makeRechargeProvider(stack, true); return Helper.makeRechargeProvider(stack, true);
else return null; else return null;
} }

View file

@ -33,7 +33,7 @@ public class Sword extends SwordItem implements IModItem, IModelProvider {
@Override @Override
public boolean hitEntity(ItemStack stack, LivingEntity target, LivingEntity attacker) { public boolean hitEntity(ItemStack stack, LivingEntity target, LivingEntity attacker) {
if (this == ModItems.INFUSED_SWORD) if (this == ModItems.INFUSED_IRON_SWORD)
target.addPotionEffect(new EffectInstance(Effects.SLOWNESS, 60, 2)); target.addPotionEffect(new EffectInstance(Effects.SLOWNESS, 60, 2));
return super.hitEntity(stack, target, attacker); return super.hitEntity(stack, target, attacker);
} }
@ -41,7 +41,7 @@ public class Sword extends SwordItem implements IModItem, IModelProvider {
@Nullable @Nullable
@Override @Override
public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) {
if (this == ModItems.INFUSED_SWORD) if (this == ModItems.INFUSED_IRON_SWORD)
return Helper.makeRechargeProvider(stack, true); return Helper.makeRechargeProvider(stack, true);
else return null; else return null;
} }

View file

@ -15,13 +15,17 @@ import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.client.renderer.color.ItemColors;
import net.minecraft.client.renderer.entity.PlayerRenderer; import net.minecraft.client.renderer.entity.PlayerRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.Tuple; import net.minecraft.util.Tuple;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import java.util.Map; import java.util.Map;
import java.util.function.Supplier;
public class ClientProxy implements IProxy { public class ClientProxy implements IProxy {
@ -86,4 +90,10 @@ public class ClientProxy implements IProxy {
public void setParticleSpawnRange(int range) { public void setParticleSpawnRange(int range) {
ParticleHandler.range = range; ParticleHandler.range = range;
} }
@Override
public <T extends Entity> void registerEntityRenderer(Class<T> entityClass, Supplier<IRenderFactory<T>> renderFactory) {
RenderingRegistry.registerEntityRenderingHandler(entityClass, renderFactory.get());
}
} }

View file

@ -3,8 +3,12 @@ package de.ellpeck.naturesaura.proxy;
import de.ellpeck.naturesaura.reg.IColorProvidingBlock; import de.ellpeck.naturesaura.reg.IColorProvidingBlock;
import de.ellpeck.naturesaura.reg.IColorProvidingItem; import de.ellpeck.naturesaura.reg.IColorProvidingItem;
import de.ellpeck.naturesaura.reg.ITESRProvider; import de.ellpeck.naturesaura.reg.ITESRProvider;
import net.minecraft.entity.Entity;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import java.util.function.Supplier;
public interface IProxy { public interface IProxy {
void preInit(FMLCommonSetupEvent event); void preInit(FMLCommonSetupEvent event);
@ -23,4 +27,7 @@ public interface IProxy {
void setParticleDepth(boolean depth); void setParticleDepth(boolean depth);
void setParticleSpawnRange(int range); void setParticleSpawnRange(int range);
<T extends Entity> void registerEntityRenderer(Class<T> entityClass, Supplier<IRenderFactory<T>> renderFactory);
} }

View file

@ -3,8 +3,12 @@ package de.ellpeck.naturesaura.proxy;
import de.ellpeck.naturesaura.reg.IColorProvidingBlock; import de.ellpeck.naturesaura.reg.IColorProvidingBlock;
import de.ellpeck.naturesaura.reg.IColorProvidingItem; import de.ellpeck.naturesaura.reg.IColorProvidingItem;
import de.ellpeck.naturesaura.reg.ITESRProvider; import de.ellpeck.naturesaura.reg.ITESRProvider;
import net.minecraft.entity.Entity;
import net.minecraftforge.fml.client.registry.IRenderFactory;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import java.util.function.Supplier;
public class ServerProxy implements IProxy { public class ServerProxy implements IProxy {
@Override @Override
@ -51,4 +55,9 @@ public class ServerProxy implements IProxy {
public void setParticleSpawnRange(int range) { public void setParticleSpawnRange(int range) {
} }
@Override
public <T extends Entity> void registerEntityRenderer(Class<T> entityClass, Supplier<IRenderFactory<T>> renderFactory) {
}
} }

View file

@ -157,7 +157,7 @@ public final class ModRecipes {
ing(Items.IRON_INGOT), new ItemStack(ModItems.INFUSED_IRON), ing(Items.IRON_INGOT), new ItemStack(ModItems.INFUSED_IRON),
Ingredient.EMPTY, 15000, 80).register(); Ingredient.EMPTY, 15000, 80).register();
new AltarRecipe(res("infused_iron_block"), new AltarRecipe(res("infused_iron_block"),
ing(Blocks.IRON_BLOCK), new ItemStack(ModBlocks.INFUSED_IRON), ing(Blocks.IRON_BLOCK), new ItemStack(ModBlocks.INFUSED_IRON_BLOCK),
Ingredient.EMPTY, 135000, 700).register(); Ingredient.EMPTY, 135000, 700).register();
new AltarRecipe(res("infused_stone"), new AltarRecipe(res("infused_stone"),
ing(Blocks.STONE), new ItemStack(ModBlocks.INFUSED_STONE), ing(Blocks.STONE), new ItemStack(ModBlocks.INFUSED_STONE),

View file

@ -8,6 +8,8 @@ import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities;
import de.ellpeck.naturesaura.entities.EntityEffectInhibitor; import de.ellpeck.naturesaura.entities.EntityEffectInhibitor;
import de.ellpeck.naturesaura.entities.EntityMoverMinecart; import de.ellpeck.naturesaura.entities.EntityMoverMinecart;
import de.ellpeck.naturesaura.entities.ModEntities; import de.ellpeck.naturesaura.entities.ModEntities;
import de.ellpeck.naturesaura.entities.render.RenderEffectInhibitor;
import de.ellpeck.naturesaura.entities.render.RenderMoverMinecart;
import de.ellpeck.naturesaura.items.*; import de.ellpeck.naturesaura.items.*;
import de.ellpeck.naturesaura.items.tools.*; import de.ellpeck.naturesaura.items.tools.*;
import de.ellpeck.naturesaura.misc.BlockLootProvider; import de.ellpeck.naturesaura.misc.BlockLootProvider;
@ -184,13 +186,18 @@ public final class ModRegistry {
public static void registerEntities(RegistryEvent.Register<EntityType<?>> event) { public static void registerEntities(RegistryEvent.Register<EntityType<?>> event) {
event.getRegistry().registerAll( event.getRegistry().registerAll(
EntityType.Builder.create(EntityMoverMinecart::new, EntityClassification.MISC) EntityType.Builder.create(EntityMoverMinecart::new, EntityClassification.MISC)
.size(1, 1).setShouldReceiveVelocityUpdates(true)
.setTrackingRange(64).setUpdateInterval(3).immuneToFire().build(NaturesAura.MOD_ID + ":mover_minecart") .setTrackingRange(64).setUpdateInterval(3).immuneToFire().build(NaturesAura.MOD_ID + ":mover_minecart")
.setRegistryName("mover_cart"), .setRegistryName("mover_cart"),
EntityType.Builder.create(EntityEffectInhibitor::new, EntityClassification.MISC) EntityType.Builder.create(EntityEffectInhibitor::new, EntityClassification.MISC)
.size(1, 1).setShouldReceiveVelocityUpdates(true)
.setTrackingRange(64).setUpdateInterval(20).immuneToFire().build(NaturesAura.MOD_ID + ":effect_inhibitor") .setTrackingRange(64).setUpdateInterval(20).immuneToFire().build(NaturesAura.MOD_ID + ":effect_inhibitor")
.setRegistryName("effect_inhibitor") .setRegistryName("effect_inhibitor")
); );
Helper.populateObjectHolders(ModEntities.class, event.getRegistry()); Helper.populateObjectHolders(ModEntities.class, event.getRegistry());
NaturesAura.proxy.registerEntityRenderer(EntityMoverMinecart.class, () -> RenderMoverMinecart::new);
NaturesAura.proxy.registerEntityRenderer(EntityEffectInhibitor.class, () -> RenderEffectInhibitor::new);
} }
@SubscribeEvent @SubscribeEvent

View file

@ -1,179 +0,0 @@
{
"itemGroup.naturesaura": "Nature's Aura",
"tile.naturesaura.ancient_log.name": "Ancient Log",
"tile.naturesaura.ancient_bark.name": "Ancient Bark",
"tile.naturesaura.ancient_leaves.name": "Ancient Leaves",
"tile.naturesaura.ancient_sapling.name": "Ancient Sapling",
"tile.naturesaura.nature_altar.name": "Natural Altar",
"tile.naturesaura.decayed_leaves.name": "Decayed Leaves",
"tile.naturesaura.golden_leaves.name": "Golden Leaves",
"tile.naturesaura.gold_powder.name": "Gold Powder",
"tile.naturesaura.wood_stand.name": "Wooden Stand",
"tile.naturesaura.ancient_planks.name": "Ancient Planks",
"tile.naturesaura.infused_stone.name": "Infused Rock",
"tile.naturesaura.furnace_heater.name": "Extraneous Firestarter",
"tile.naturesaura.potion_generator.name": "Lingering Absorber",
"tile.naturesaura.aura_detector.name": "Aura Detector",
"tile.naturesaura.conversion_catalyst.name": "Transmutation Catalyst",
"tile.naturesaura.crushing_catalyst.name": "Crumbling Catalyst",
"tile.naturesaura.infused_stairs.name": "Infused Rock Stairs",
"tile.naturesaura.infused_slab.name": "Infused Rock Slab",
"tile.naturesaura.infused_slab_double.name": "Infused Rock Double Slab",
"tile.naturesaura.ancient_stairs.name": "Ancient Wood Stairs",
"tile.naturesaura.ancient_slab.name": "Ancient Wood Slab",
"tile.naturesaura.ancient_slab_double.name": "Ancient Wood Double Slab",
"tile.naturesaura.infused_brick.name": "Infused Brick",
"tile.naturesaura.infused_brick_stairs.name": "Infused Brick Stairs",
"tile.naturesaura.infused_brick_slab.name": "Infused Brick Slab",
"tile.naturesaura.infused_brick_slab_double.name": "Infused Brick Double Slab",
"tile.naturesaura.flower_generator.name": "Herbivorous Absorber",
"tile.naturesaura.placer.name": "Imperceptible Builder",
"tile.naturesaura.hopper_upgrade.name": "Hopper Enhancement",
"tile.naturesaura.field_creator.name": "Aura Field Creator",
"tile.naturesaura.oak_generator.name": "Canopy Diminisher",
"tile.naturesaura.infused_iron_block.name": "Infused Iron Block",
"tile.naturesaura.offering_table.name": "Offering Table",
"tile.naturesaura.pickup_stopper.name": "Item Grounder",
"tile.naturesaura.spawn_lamp.name": "Lamp of Sanctuary",
"tile.naturesaura.animal_generator.name": "Disentangler of Mortals",
"tile.naturesaura.end_flower.name": "Rose of Oblivion",
"tile.naturesaura.grated_chute.name": "Adept Hopper",
"tile.naturesaura.animal_spawner.name": "Altar of Birthing",
"tile.naturesaura.auto_crafter.name": "Automatic Constructor",
"tile.naturesaura.gold_brick.name": "Golden Stone Bricks",
"tile.naturesaura.rf_converter.name": "Energetic Aura Forge",
"tile.naturesaura.moss_generator.name": "Swamp Homi",
"tile.naturesaura.time_changer.name": "Shifting Sundial",
"tile.naturesaura.generator_limit_remover.name": "Creational Catalyst",
"tile.naturesaura.ender_crate.name": "Ender Crate",
"tile.naturesaura.powder_placer.name": "Powder Manipulator",
"tile.naturesaura.firework_generator.name": "Firecracker Gaze",
"tile.naturesaura.chunk_loader.name": "World Eye",
"tile.naturesaura.dimension_rail_overworld.name": "Rail of the Overworld",
"tile.naturesaura.dimension_rail_end.name": "Rail of the End",
"tile.naturesaura.dimension_rail_nether.name": "Rail of the Nether",
"tile.naturesaura.projectile_generator.name": "Shooting Mark",
"item.naturesaura.eye.name": "Environmental Eye",
"item.naturesaura.eye_improved.name": "Environmental Ocular",
"item.naturesaura.gold_fiber.name": "Brilliant Fiber",
"item.naturesaura.gold_leaf.name": "Gold Leaf",
"item.naturesaura.infused_iron.name": "Infused Iron",
"item.naturesaura.infused_iron_pickaxe.name": "Botanist's Pickaxe",
"item.naturesaura.infused_iron_axe.name": "Botanist's Handaxe",
"item.naturesaura.infused_iron_shovel.name": "Botanist's Shovel",
"item.naturesaura.infused_iron_sword.name": "Botanist's Blade",
"item.naturesaura.infused_iron_hoe.name": "Botanist's Hoe",
"item.naturesaura.ancient_stick.name": "Ancient Wood Rod",
"item.naturesaura.aura_cache.name": "Aura Cache",
"item.naturesaura.color_changer.name": "Bucket of Infinite Color",
"item.naturesaura.book.name": "Book of Natural Aura",
"item.naturesaura.shockwave_creator.name": "Amulet of Wrath",
"item.naturesaura.multiblock_maker.name": "Multiblock Maker",
"item.naturesaura.aura_bottle.naturesaura:overworld.name": "Bottled Sunlight",
"item.naturesaura.aura_bottle.naturesaura:nether.name": "Bottled Ghosts",
"item.naturesaura.aura_bottle.naturesaura:end.name": "Bottled Darkness",
"item.naturesaura.aura_bottle.naturesaura:other.name": "Bottled Substance",
"item.naturesaura.farming_stencil.name": "Farming Stencil",
"item.naturesaura.bottle_two_the_rebottling.name": "Bottle and Cork",
"item.naturesaura.sky_ingot.name": "Ingot of the Skies",
"item.naturesaura.calling_spirit.name": "Spirit of Calling",
"item.naturesaura.birth_spirit.name": "Spirit of Birthing",
"item.naturesaura.infused_iron_helmet.name": "Botanist's Headwear",
"item.naturesaura.infused_iron_chest.name": "Botanist's Chestplate",
"item.naturesaura.infused_iron_pants.name": "Botanist's Leggings",
"item.naturesaura.infused_iron_shoes.name": "Botanist's Shoes",
"item.naturesaura.effect_powder.naturesaura:plant_boost.name": "Powder of Steady Growth",
"item.naturesaura.effect_powder.naturesaura:cache_recharge.name": "Powder of no Storage",
"item.naturesaura.effect_powder.naturesaura:animal.name": "Powder of Fertility",
"item.naturesaura.effect_powder.naturesaura:ore_spawn.name": "Powder of the Bountiful Core",
"item.naturesaura.mover_cart.name": "Aura Attraction Cart",
"item.naturesaura.range_visualizer.name": "Mystical Magnifier",
"item.naturesaura.clock_hand.name": "Hand of Time",
"item.naturesaura.token_anger.name": "Token of Anger",
"item.naturesaura.token_euphoria.name": "Token of Euphoria",
"item.naturesaura.token_fear.name": "Token of Fear",
"item.naturesaura.token_grief.name": "Token of Grief",
"item.naturesaura.token_joy.name": "Token of Joy",
"item.naturesaura.token_rage.name": "Token of Rage",
"item.naturesaura.token_sorrow.name": "Token of Sorrow",
"item.naturesaura.token_terror.name": "Token of Terror",
"item.naturesaura.ender_access.name": "Ender Ocular",
"item.naturesaura.cave_finder.name": "Staff of Shadows",
"item.naturesaura.aura_trove.name": "Aura Trove",
"container.naturesaura.tree_ritual.name": "Ritual of the Forest",
"container.naturesaura.altar.name": "Natural Altar Infusion",
"container.naturesaura.offering.name": "Offering to the Gods",
"container.naturesaura.animal_spawner.name": "Altar of Birthing",
"info.naturesaura.aura_in_area": "Aura Around",
"info.naturesaura.book.landing": "$(aura) is a complicated matter, and creating, collecting and making use of it can be difficult.$(br)The $(item)Book of Natural Aura$() contains all the information one requires to do so.",
"info.naturesaura.book.subtitle": "The guide to Nature's Aura",
"info.naturesaura.stored_pos": "You jot down the position",
"info.naturesaura.connected": "You make a connection",
"info.naturesaura.same_position": "This seems to be the position from your notes...",
"info.naturesaura.too_far": "The distance seems too great...",
"info.naturesaura.stored_pos_gone": "Your notes seem out of date...",
"info.naturesaura.empty": "Empty",
"info.naturesaura.ender_crate": "Ender Crate: %s",
"info.naturesaura.ender_access": "Ender Ocular: %s",
"info.naturesaura.ender_name.missing": "No Ender Name",
"info.naturesaura.ender_name": "Ender Name: %s",
"info.naturesaura.range_visualizer.start": "You take note of the magnification...",
"info.naturesaura.range_visualizer.end": "You lose focus of the magnification...",
"info.naturesaura.range_visualizer.end_all": "You lose focus of all magnifications...",
"advancement.naturesaura.root": "Nature's Aura",
"advancement.naturesaura.root.desc": "Becoming a magical botanist",
"advancement.naturesaura.get_book": "Pages of Discovery",
"advancement.naturesaura.get_book.desc": "Create the Book of Natural Aura",
"advancement.naturesaura.gold_leaf": "Time = Brilliance",
"advancement.naturesaura.gold_leaf.desc": "Create and harvest a Brilliant Tree",
"advancement.naturesaura.wood_stand": "Powers of the Forest",
"advancement.naturesaura.wood_stand.desc": "Create a Wooden Stand for the Ritual of the Forest",
"advancement.naturesaura.altar": "Empowered",
"advancement.naturesaura.altar.desc": "Create a Natural Altar using the Ritual of the Forest",
"advancement.naturesaura.infused_materials": "Iron Factory",
"advancement.naturesaura.infused_materials.desc": "Use the Natural Altar to create Infused Iron",
"advancement.naturesaura.furnace_heater": "Cozy Warmth",
"advancement.naturesaura.furnace_heater.desc": "Create an Extraneous Firestarter to heat your furnace",
"advancement.naturesaura.placer": "Plop Plop Placement",
"advancement.naturesaura.placer.desc": "Create an Imperceptible Builder to place blocks for you",
"advancement.naturesaura.conversion_catalyst": "Not So Equivalent Exchange",
"advancement.naturesaura.conversion_catalyst.desc": "Create a Conversion Catalyst for easy material conversion",
"advancement.naturesaura.infused_tools": "Gear Up Intensifies",
"advancement.naturesaura.infused_tools.desc": "Create an Infused Iron Pickaxe and Blade",
"advancement.naturesaura.aura_bottle_overworld": "A Taste of Sunlight",
"advancement.naturesaura.aura_bottle_overworld.desc": "Collect Aura using a Bottle in the Overworld",
"advancement.naturesaura.aura_bottle_nether": "Spooky Scary Skeletons",
"advancement.naturesaura.aura_bottle_nether.desc": "Collect Aura using a Bottle in the Nether",
"advancement.naturesaura.aura_bottle_end": "Breathy Surroundings",
"advancement.naturesaura.aura_bottle_end.desc": "Collect Aura using a Bottle in the End",
"advancement.naturesaura.offering": "Yo God, Ya Want This?",
"advancement.naturesaura.offering.desc": "Create an Offering Table for the Offering to the Gods",
"advancement.naturesaura.sky_ingot": "Sturdy and Light",
"advancement.naturesaura.sky_ingot.desc": "Create an Ingot of the Skies using the Offering to the Gods",
"advancement.naturesaura.aura_cache": "Ca-ching",
"advancement.naturesaura.aura_cache.desc": "Create an Aura Cache to store Aura in your inventory",
"advancement.naturesaura.positive_imbalance": "Luscious Surroundings",
"advancement.naturesaura.positive_imbalance.desc": "Create enough Aura to cause positive imbalance effects",
"advancement.naturesaura.negative_imbalance": "Deadly Day",
"advancement.naturesaura.negative_imbalance.desc": "Drain enough Aura to cause negative imbalance effects",
"advancement.naturesaura.end_flower": "Blue Lotus",
"advancement.naturesaura.end_flower.desc": "Kill the Ender Dragon to make a Rose of Oblivion grow",
"advancement.naturesaura.eye": "Suddenly I See",
"advancement.naturesaura.eye.desc": "Create an Environmental Eye to see the Aura in the area",
"advancement.naturesaura.eye_improved": "Suddenly I See a Lot Better",
"advancement.naturesaura.eye_improved.desc": "Create an Environmental Ocular to see Aura imbalance effects",
"advancement.naturesaura.range_visualizer": "I Spy With my Little Eye",
"advancement.naturesaura.range_visualizer.desc": "Create a Mystical Magnifier to see the range of your devices",
"command.naturesaura.aura.usage": "/naaura store|drain <amount> [range] OR /naaura reset <range>",
"potion.naturesaura.breathless.name": "Breathless",
"entity.naturesaura.effect_inhibitor.name": "Effect Powder",
"entity.naturesaura.mover_cart.name": "Aura Attraction Cart"
}

View file

@ -0,0 +1,171 @@
{
"itemGroup.naturesaura": "Nature's Aura",
"block.naturesaura.ancient_log": "Ancient Log",
"block.naturesaura.ancient_bark": "Ancient Bark",
"block.naturesaura.ancient_leaves": "Ancient Leaves",
"block.naturesaura.ancient_sapling": "Ancient Sapling",
"block.naturesaura.nature_altar": "Natural Altar",
"block.naturesaura.decayed_leaves": "Decayed Leaves",
"block.naturesaura.golden_leaves": "Golden Leaves",
"block.naturesaura.gold_powder": "Gold Powder",
"block.naturesaura.wood_stand": "Wooden Stand",
"block.naturesaura.ancient_planks": "Ancient Planks",
"block.naturesaura.infused_stone": "Infused Rock",
"block.naturesaura.furnace_heater": "Extraneous Firestarter",
"block.naturesaura.potion_generator": "Lingering Absorber",
"block.naturesaura.aura_detector": "Aura Detector",
"block.naturesaura.conversion_catalyst": "Transmutation Catalyst",
"block.naturesaura.crushing_catalyst": "Crumbling Catalyst",
"block.naturesaura.infused_stairs": "Infused Rock Stairs",
"block.naturesaura.infused_slab": "Infused Rock Slab",
"block.naturesaura.infused_slab_double": "Infused Rock Double Slab",
"block.naturesaura.ancient_stairs": "Ancient Wood Stairs",
"block.naturesaura.ancient_slab": "Ancient Wood Slab",
"block.naturesaura.ancient_slab_double": "Ancient Wood Double Slab",
"block.naturesaura.infused_brick": "Infused Brick",
"block.naturesaura.infused_brick_stairs": "Infused Brick Stairs",
"block.naturesaura.infused_brick_slab": "Infused Brick Slab",
"block.naturesaura.infused_brick_slab_double": "Infused Brick Double Slab",
"block.naturesaura.flower_generator": "Herbivorous Absorber",
"block.naturesaura.placer": "Imperceptible Builder",
"block.naturesaura.hopper_upgrade": "Hopper Enhancement",
"block.naturesaura.field_creator": "Aura Field Creator",
"block.naturesaura.oak_generator": "Canopy Diminisher",
"block.naturesaura.infused_iron_block": "Infused Iron Block",
"block.naturesaura.offering_table": "Offering Table",
"block.naturesaura.pickup_stopper": "Item Grounder",
"block.naturesaura.spawn_lamp": "Lamp of Sanctuary",
"block.naturesaura.animal_generator": "Disentangler of Mortals",
"block.naturesaura.end_flower": "Rose of Oblivion",
"block.naturesaura.grated_chute": "Adept Hopper",
"block.naturesaura.animal_spawner": "Altar of Birthing",
"block.naturesaura.auto_crafter": "Automatic Constructor",
"block.naturesaura.gold_brick": "Golden Stone Bricks",
"block.naturesaura.rf_converter": "Energetic Aura Forge",
"block.naturesaura.moss_generator": "Swamp Homi",
"block.naturesaura.time_changer": "Shifting Sundial",
"block.naturesaura.generator_limit_remover": "Creational Catalyst",
"block.naturesaura.ender_crate": "Ender Crate",
"block.naturesaura.powder_placer": "Powder Manipulator",
"block.naturesaura.firework_generator": "Firecracker Gaze",
"block.naturesaura.chunk_loader": "World Eye",
"block.naturesaura.dimension_rail_overworld": "Rail of the Overworld",
"block.naturesaura.dimension_rail_end": "Rail of the End",
"block.naturesaura.dimension_rail_nether": "Rail of the Nether",
"block.naturesaura.projectile_generator": "Shooting Mark",
"item.naturesaura.eye": "Environmental Eye",
"item.naturesaura.eye_improved": "Environmental Ocular",
"item.naturesaura.gold_fiber": "Brilliant Fiber",
"item.naturesaura.gold_leaf": "Gold Leaf",
"item.naturesaura.infused_iron": "Infused Iron",
"item.naturesaura.infused_iron_pickaxe": "Botanist's Pickaxe",
"item.naturesaura.infused_iron_axe": "Botanist's Handaxe",
"item.naturesaura.infused_iron_shovel": "Botanist's Shovel",
"item.naturesaura.infused_iron_sword": "Botanist's Blade",
"item.naturesaura.infused_iron_hoe": "Botanist's Hoe",
"item.naturesaura.ancient_stick": "Ancient Wood Rod",
"item.naturesaura.aura_cache": "Aura Cache",
"item.naturesaura.color_changer": "Bucket of Infinite Color",
"item.naturesaura.book": "Book of Natural Aura",
"item.naturesaura.shockwave_creator": "Amulet of Wrath",
"item.naturesaura.multiblock_maker": "Multiblock Maker",
"item.naturesaura.aura_bottle.naturesaura:overworld": "Bottled Sunlight",
"item.naturesaura.aura_bottle.naturesaura:nether": "Bottled Ghosts",
"item.naturesaura.aura_bottle.naturesaura:end": "Bottled Darkness",
"item.naturesaura.aura_bottle.naturesaura:other": "Bottled Substance",
"item.naturesaura.farming_stencil": "Farming Stencil",
"item.naturesaura.bottle_two_the_rebottling": "Bottle and Cork",
"item.naturesaura.sky_ingot": "Ingot of the Skies",
"item.naturesaura.calling_spirit": "Spirit of Calling",
"item.naturesaura.birth_spirit": "Spirit of Birthing",
"item.naturesaura.infused_iron_helmet": "Botanist's Headwear",
"item.naturesaura.infused_iron_chest": "Botanist's Chestplate",
"item.naturesaura.infused_iron_pants": "Botanist's Leggings",
"item.naturesaura.infused_iron_shoes": "Botanist's Shoes",
"item.naturesaura.effect_powder.naturesaura:plant_boost": "Powder of Steady Growth",
"item.naturesaura.effect_powder.naturesaura:cache_recharge": "Powder of no Storage",
"item.naturesaura.effect_powder.naturesaura:animal": "Powder of Fertility",
"item.naturesaura.effect_powder.naturesaura:ore_spawn": "Powder of the Bountiful Core",
"item.naturesaura.mover_cart": "Aura Attraction Cart",
"item.naturesaura.range_visualizer": "Mystical Magnifier",
"item.naturesaura.clock_hand": "Hand of Time",
"item.naturesaura.token_anger": "Token of Anger",
"item.naturesaura.token_euphoria": "Token of Euphoria",
"item.naturesaura.token_fear": "Token of Fear",
"item.naturesaura.token_grief": "Token of Grief",
"item.naturesaura.token_joy": "Token of Joy",
"item.naturesaura.token_rage": "Token of Rage",
"item.naturesaura.token_sorrow": "Token of Sorrow",
"item.naturesaura.token_terror": "Token of Terror",
"item.naturesaura.ender_access": "Ender Ocular",
"item.naturesaura.cave_finder": "Staff of Shadows",
"item.naturesaura.aura_trove": "Aura Trove",
"container.naturesaura.tree_ritual": "Ritual of the Forest",
"container.naturesaura.altar": "Natural Altar Infusion",
"container.naturesaura.offering": "Offering to the Gods",
"container.naturesaura.animal_spawner": "Altar of Birthing",
"info.naturesaura.aura_in_area": "Aura Around",
"info.naturesaura.book.landing": "$(aura) is a complicated matter, and creating, collecting and making use of it can be difficult.$(br)The $(item)Book of Natural Aura$() contains all the information one requires to do so.",
"info.naturesaura.book.subtitle": "The guide to Nature's Aura",
"info.naturesaura.stored_pos": "You jot down the position",
"info.naturesaura.connected": "You make a connection",
"info.naturesaura.same_position": "This seems to be the position from your notes...",
"info.naturesaura.too_far": "The distance seems too great...",
"info.naturesaura.stored_pos_gone": "Your notes seem out of date...",
"info.naturesaura.empty": "Empty",
"info.naturesaura.ender_crate": "Ender Crate: %s",
"info.naturesaura.ender_access": "Ender Ocular: %s",
"info.naturesaura.ender_name.missing": "No Ender Name",
"info.naturesaura.ender_name": "Ender Name: %s",
"info.naturesaura.range_visualizer.start": "You take note of the magnification...",
"info.naturesaura.range_visualizer.end": "You lose focus of the magnification...",
"info.naturesaura.range_visualizer.end_all": "You lose focus of all magnifications...",
"advancement.naturesaura.root": "Nature's Aura",
"advancement.naturesaura.root.desc": "Becoming a magical botanist",
"advancement.naturesaura.get_book": "Pages of Discovery",
"advancement.naturesaura.get_book.desc": "Create the Book of Natural Aura",
"advancement.naturesaura.gold_leaf": "Time = Brilliance",
"advancement.naturesaura.gold_leaf.desc": "Create and harvest a Brilliant Tree",
"advancement.naturesaura.wood_stand": "Powers of the Forest",
"advancement.naturesaura.wood_stand.desc": "Create a Wooden Stand for the Ritual of the Forest",
"advancement.naturesaura.altar": "Empowered",
"advancement.naturesaura.altar.desc": "Create a Natural Altar using the Ritual of the Forest",
"advancement.naturesaura.infused_materials": "Iron Factory",
"advancement.naturesaura.infused_materials.desc": "Use the Natural Altar to create Infused Iron",
"advancement.naturesaura.furnace_heater": "Cozy Warmth",
"advancement.naturesaura.furnace_heater.desc": "Create an Extraneous Firestarter to heat your furnace",
"advancement.naturesaura.placer": "Plop Plop Placement",
"advancement.naturesaura.placer.desc": "Create an Imperceptible Builder to place blocks for you",
"advancement.naturesaura.conversion_catalyst": "Not So Equivalent Exchange",
"advancement.naturesaura.conversion_catalyst.desc": "Create a Conversion Catalyst for easy material conversion",
"advancement.naturesaura.infused_tools": "Gear Up Intensifies",
"advancement.naturesaura.infused_tools.desc": "Create an Infused Iron Pickaxe and Blade",
"advancement.naturesaura.aura_bottle_overworld": "A Taste of Sunlight",
"advancement.naturesaura.aura_bottle_overworld.desc": "Collect Aura using a Bottle in the Overworld",
"advancement.naturesaura.aura_bottle_nether": "Spooky Scary Skeletons",
"advancement.naturesaura.aura_bottle_nether.desc": "Collect Aura using a Bottle in the Nether",
"advancement.naturesaura.aura_bottle_end": "Breathy Surroundings",
"advancement.naturesaura.aura_bottle_end.desc": "Collect Aura using a Bottle in the End",
"advancement.naturesaura.offering": "Yo God, Ya Want This?",
"advancement.naturesaura.offering.desc": "Create an Offering Table for the Offering to the Gods",
"advancement.naturesaura.sky_ingot": "Sturdy and Light",
"advancement.naturesaura.sky_ingot.desc": "Create an Ingot of the Skies using the Offering to the Gods",
"advancement.naturesaura.aura_cache": "Ca-ching",
"advancement.naturesaura.aura_cache.desc": "Create an Aura Cache to store Aura in your inventory",
"advancement.naturesaura.positive_imbalance": "Luscious Surroundings",
"advancement.naturesaura.positive_imbalance.desc": "Create enough Aura to cause positive imbalance effects",
"advancement.naturesaura.negative_imbalance": "Deadly Day",
"advancement.naturesaura.negative_imbalance.desc": "Drain enough Aura to cause negative imbalance effects",
"advancement.naturesaura.end_flower": "Blue Lotus",
"advancement.naturesaura.end_flower.desc": "Kill the Ender Dragon to make a Rose of Oblivion grow",
"advancement.naturesaura.eye": "Suddenly I See",
"advancement.naturesaura.eye.desc": "Create an Environmental Eye to see the Aura in the area",
"advancement.naturesaura.eye_improved": "Suddenly I See a Lot Better",
"advancement.naturesaura.eye_improved.desc": "Create an Environmental Ocular to see Aura imbalance effects",
"advancement.naturesaura.range_visualizer": "I Spy With my Little Eye",
"advancement.naturesaura.range_visualizer.desc": "Create a Mystical Magnifier to see the range of your devices",
"command.naturesaura.aura.usage": "/naaura store|drain <amount> [range] OR /naaura reset <range>",
"potion.naturesaura.breathless": "Breathless",
"entity.naturesaura.effect_inhibitor": "Effect Powder",
"entity.naturesaura.mover_cart": "Aura Attraction Cart"
}

View file

@ -1,177 +0,0 @@
itemGroup.naturesaura=자연의 오라
tile.naturesaura.ancient_log.name=고대의 나무
tile.naturesaura.ancient_bark.name=고대의 나무껍질
tile.naturesaura.ancient_leaves.name=고대의 나뭇잎
tile.naturesaura.ancient_sapling.name=고대의 묘목
tile.naturesaura.nature_altar.name=자연의 제단
tile.naturesaura.decayed_leaves.name=썩은 나뭇잎
tile.naturesaura.golden_leaves.name=금 잎
tile.naturesaura.gold_powder.name=금빛 가루
tile.naturesaura.wood_stand.name=나무 받침대
tile.naturesaura.ancient_planks.name=고대의 나무판자
tile.naturesaura.infused_stone.name=스며든 돌
tile.naturesaura.furnace_heater.name=외부 발화기
tile.naturesaura.potion_generator.name=물약 흡수기
tile.naturesaura.aura_detector.name=오라 감지기
tile.naturesaura.conversion_catalyst.name=변환의 촉매제
tile.naturesaura.crushing_catalyst.name=붕해 촉매제
tile.naturesaura.infused_stairs.name=스며든 돌 계단
tile.naturesaura.infused_slab.name=스며든 돌 반 블록
tile.naturesaura.infused_slab_double.name=스며든 돌 반 블록
tile.naturesaura.ancient_stairs.name=고대의 나무 계단
tile.naturesaura.ancient_slab.name=고대의 나무 반 블록
tile.naturesaura.ancient_slab_double.name=고대의 나무 반 블록
tile.naturesaura.infused_brick.name=스며든 벽돌
tile.naturesaura.infused_brick_stairs.name=스며든 벽돌 계단
tile.naturesaura.infused_brick_slab.name=스며든 벽돌 반 블록
tile.naturesaura.infused_brick_slab_double.name=스며든 벽돌 반 블록
tile.naturesaura.flower_generator.name=식물 흡수기
tile.naturesaura.placer.name=작은 건축가
tile.naturesaura.hopper_upgrade.name=호퍼 향상기
tile.naturesaura.field_creator.name=오라 필드 생성기
tile.naturesaura.oak_generator.name=축소 캐노피
tile.naturesaura.infused_iron_block.name=스며든 철 블록
tile.naturesaura.offering_table.name=공물 탁자
tile.naturesaura.pickup_stopper.name=아이템 그라운더
tile.naturesaura.spawn_lamp.name=안식의 등불
tile.naturesaura.animal_generator.name=생명 해방자
tile.naturesaura.end_flower.name=망각의 장미
tile.naturesaura.grated_chute.name=전문가 호퍼
tile.naturesaura.animal_spawner.name=탄생의 제단
tile.naturesaura.auto_crafter.name=자동 제작기
tile.naturesaura.gold_brick.name=금빛 석재 벽돌
tile.naturesaura.rf_converter.name=오라 에너지 가공기
tile.naturesaura.moss_generator.name=습지 호미
tile.naturesaura.time_changer.name=변화의 해시계
tile.naturesaura.generator_limit_remover.name=생산 촉매제
tile.naturesaura.ender_crate.name=엔더 운송 상자
tile.naturesaura.powder_placer.name=가루 조작기
tile.naturesaura.firework_generator.name=폭죽 응시기
tile.naturesaura.chunk_loader.name=세계의 눈
tile.naturesaura.dimension_rail_overworld.name=오버월드의 레일
tile.naturesaura.dimension_rail_end.name=엔더의 레일
tile.naturesaura.dimension_rail_nether.name=네더의 레일
tile.naturesaura.projectile_generator.name=사격 마크
item.naturesaura.eye.name=자연의 눈
item.naturesaura.eye_improved.name=자연의 시각
item.naturesaura.gold_fiber.name=금빛 섬유
item.naturesaura.gold_leaf.name=금 잎
item.naturesaura.infused_iron.name=스며든 철
item.naturesaura.infused_iron_pickaxe.name=식물학자의 곡괭이
item.naturesaura.infused_iron_axe.name=식물학자의 손도끼
item.naturesaura.infused_iron_shovel.name=식물학자의 삽
item.naturesaura.infused_iron_sword.name=식물학자의 검
item.naturesaura.infused_iron_hoe.name=식물학자의 괭이
item.naturesaura.ancient_stick.name=고대의 나무 막대기
item.naturesaura.aura_cache.name=오라 캐시
item.naturesaura.color_changer.name=무한의 색 양동이
item.naturesaura.book.name=자연의 오라의 책
item.naturesaura.shockwave_creator.name=분노의 부적
item.naturesaura.multiblock_maker.name=멀티블록 제작기
item.naturesaura.aura_bottle.naturesaura:overworld.name=병에 담은 햇빛
item.naturesaura.aura_bottle.naturesaura:nether.name=병에 담은 유령
item.naturesaura.aura_bottle.naturesaura:end.name=병에 담은 어둠
item.naturesaura.aura_bottle.naturesaura:other.name=병에 담은 물질
item.naturesaura.farming_stencil.name=농업 스텐실
item.naturesaura.bottle_two_the_rebottling.name=병과 코르크
item.naturesaura.sky_ingot.name=하늘의 주괴
item.naturesaura.calling_spirit.name=부름의 영혼
item.naturesaura.birth_spirit.name=탄생의 영혼
item.naturesaura.infused_iron_helmet.name=식물학자의 투구
item.naturesaura.infused_iron_chest.name=식물학자의 흉갑
item.naturesaura.infused_iron_pants.name=식물학자의 각반
item.naturesaura.infused_iron_shoes.name=식물학자의 부츠
item.naturesaura.effect_powder.naturesaura:plant_boost.name=꾸준한 성장의 가루
item.naturesaura.effect_powder.naturesaura:cache_recharge.name=비충전의 가루
item.naturesaura.effect_powder.naturesaura:animal.name=생식의 가루
item.naturesaura.effect_powder.naturesaura:ore_spawn.name=풍족의 가루
item.naturesaura.mover_cart.name=오라 카트
item.naturesaura.range_visualizer.name=신비한 돋보기
item.naturesaura.clock_hand.name=시간의 손
item.naturesaura.token_anger.name=분노의 토큰
item.naturesaura.token_euphoria.name=희열의 토큰
item.naturesaura.token_fear.name=두려움의 토큰
item.naturesaura.token_grief.name=비탄의 토큰
item.naturesaura.token_joy.name=기쁨의 토큰
item.naturesaura.token_rage.name=격분의 토큰
item.naturesaura.token_sorrow.name=슬픔의 토큰
item.naturesaura.token_terror.name=공포의 토큰
item.naturesaura.ender_access.name=엔더의 시각
item.naturesaura.cave_finder.name=그림자의 지팡이
item.naturesaura.aura_trove.name=오라 수집기
container.naturesaura.tree_ritual.name=숲의 의식
container.naturesaura.altar.name=자연의 오라 인퓨전
container.naturesaura.offering.name=신께 바치는 공물
container.naturesaura.animal_spawner.name=탄생의 제단
info.naturesaura.aura_in_area=주변의 오라
info.naturesaura.book.landing=$(#419600)오라$()는 복잡한 문제인데, 그것을 만들고, 모으고, 이용하는 것은 어려울 수 있다.$(br)$(item)자연의 오라의 책$()에는 하기 위해 필요한 모든 정보가 수록되어 있다.$(p)번역: $(l:http://blog.naver.com/tw241)Grae$()
info.naturesaura.book.subtitle=자연의 오라 안내서
info.naturesaura.stored_pos=You jot down the position
info.naturesaura.connected=연결되었습니다
info.naturesaura.same_position=This seems to be the position from your notes...
info.naturesaura.too_far=거리가 너무 멀어 보인다...
info.naturesaura.stored_pos_gone=Your notes seem out of date...
info.naturesaura.empty=비어있음
info.naturesaura.ender_crate=엔더 운송 상자: %s
info.naturesaura.ender_access=엔더의 시선: %s
info.naturesaura.ender_name.missing=엔더 이름이 부여되지 않음
info.naturesaura.ender_name=엔더 이름: %s
info.naturesaura.range_visualizer.start=돋보기를 주목하세요...
info.naturesaura.range_visualizer.end=돋보기의 집중을 잃었습니다...
info.naturesaura.range_visualizer.end_all=돋보기의 모든 집중을 잃었습니다...
advancement.naturesaura.root=자연의 오라
advancement.naturesaura.root.desc=마법의 식물학자가 되기
advancement.naturesaura.get_book=페이지 발견
advancement.naturesaura.get_book.desc=자연의 오라의 책을 만들기
advancement.naturesaura.gold_leaf=시간 = 광휘
advancement.naturesaura.gold_leaf.desc=눈부신 나무를 만들고 수확하기
advancement.naturesaura.wood_stand=숲의 가루
advancement.naturesaura.wood_stand.desc=숲의 의식을 위한 나무 받침대 만들기
advancement.naturesaura.altar=강화
advancement.naturesaura.altar.desc=숲의 의식을 이용하여 자연의 제단 만들기
advancement.naturesaura.infused_materials=철 공장
advancement.naturesaura.infused_materials.desc=자연의 제단을 사용하여 스며든 철 만들기
advancement.naturesaura.furnace_heater=아늑한 온기
advancement.naturesaura.furnace_heater.desc=외부 발화기를 제작하고 화로 데우기
advancement.naturesaura.placer=퐁당 퐁당 배치
advancement.naturesaura.placer.desc=작은 건축가를 만들어 블록 놓기
advancement.naturesaura.conversion_catalyst=그다지 동등하지 않은 교환
advancement.naturesaura.conversion_catalyst.desc=변환의 촉매를 만들어 쉽게 재료 변환하기
advancement.naturesaura.infused_tools=장비 업그레이드 심화
advancement.naturesaura.infused_tools.desc=스며든 철 곡괭이와 검 만들기
advancement.naturesaura.aura_bottle_overworld=햇빛의 맛
advancement.naturesaura.aura_bottle_overworld.desc=오버월드에서 병을 사용하여 오라 수집하기
advancement.naturesaura.aura_bottle_nether=으스스하고 무서운 스켈레톤
advancement.naturesaura.aura_bottle_nether.desc=네더에서 병을 사용하여 오라 수집하기
advancement.naturesaura.aura_bottle_end=주변의 숨소리
advancement.naturesaura.aura_bottle_end.desc=엔더에서 병을 사용하여 오라 수집하기
advancement.naturesaura.offering=오 신이여, 이건 뭔가요?
advancement.naturesaura.offering.desc=신에게 공물을 바치기 위한 공물 탁자 만들기
advancement.naturesaura.sky_ingot=견고하고 밝은
advancement.naturesaura.sky_ingot.desc=신께 공물을 바쳐 하늘의 주괴 만들기
advancement.naturesaura.aura_cache=저-장
advancement.naturesaura.aura_cache.desc=인벤토리에 오라를 저장할 오라 캐시 만들기
advancement.naturesaura.positive_imbalance=달콤한 소리
advancement.naturesaura.positive_imbalance.desc=긍정적인 오라 불균형 효과를 유발할 수 있는 충분한 오라 생성하기
advancement.naturesaura.negative_imbalance=죽어가는 날
advancement.naturesaura.negative_imbalance.desc=오라를 충분히 배출하여 부정적인 오라 불균형을 발생 시키기
advancement.naturesaura.end_flower=푸른 연꽃
advancement.naturesaura.end_flower.desc=엔더 드래곤을 죽여 망각의 장미를 자라게 하기
advancement.naturesaura.eye=갑자기 난 보았다
advancement.naturesaura.eye.desc=해당 지역의 오라를 볼 수 있는 환경의 눈 만들기
advancement.naturesaura.eye_improved=더 좋은 것을 보았다
advancement.naturesaura.eye_improved.desc=오라의 불균형 효과를 확인할 수 있는 환경의 시선 만들기
advancement.naturesaura.range_visualizer=나는 내 작은 눈과 함께 정보를 본다
advancement.naturesaura.range_visualizer.desc=장치의 범위를 볼 수 있는 신비한 돋보기 만들기
command.naturesaura.aura.usage=/naaura store|drain <수량> [범위] 또는 /naaura reset <범위>
potion.naturesaura.breathless.name=호흡 장애
entity.naturesaura.effect_inhibitor.name=효과 가루
entity.naturesaura.mover_cart.name=오라 카트

View file

@ -1,177 +0,0 @@
itemGroup.naturesaura=Nature's Aura
tile.naturesaura.ancient_log.name=Древнее дерево
tile.naturesaura.ancient_bark.name=Древняя кора
tile.naturesaura.ancient_leaves.name=Древние листья
tile.naturesaura.ancient_sapling.name=Древний cаженец
tile.naturesaura.nature_altar.name=Природный алтарь
tile.naturesaura.decayed_leaves.name=Гнилые листья
tile.naturesaura.golden_leaves.name=Золотые листья
tile.naturesaura.gold_powder.name=Золотой порошок
tile.naturesaura.wood_stand.name=Деревянная подставка
tile.naturesaura.ancient_planks.name=Древние доски
tile.naturesaura.infused_stone.name=Инфузионный камень
tile.naturesaura.furnace_heater.name=Внешний поджигатель
tile.naturesaura.potion_generator.name=Затяжной поглотитель
tile.naturesaura.aura_detector.name=Детектор ауры
tile.naturesaura.conversion_catalyst.name=Трансмутационный катализатор
tile.naturesaura.crushing_catalyst.name=Разрушающий катализатор
tile.naturesaura.infused_stairs.name=Ступеньки из инфузионного камня
tile.naturesaura.infused_slab.name=Плита из инфузионного камня
tile.naturesaura.infused_slab_double.name=Двойная плита из инфузионного камня
tile.naturesaura.ancient_stairs.name=Ступеньки из древнего дерева
tile.naturesaura.ancient_slab.name=Плита из древнего дерева
tile.naturesaura.ancient_slab_double.name=Двойная плита из древнего дерева
tile.naturesaura.infused_brick.name=Инфузионный кирпич
tile.naturesaura.infused_brick_stairs.name=Ступеньки из инфузионного кирпича
tile.naturesaura.infused_brick_slab.name=Плита из инфузионного кирпича
tile.naturesaura.infused_brick_slab_double.name=Двойная плита из инфузионного кирпича
tile.naturesaura.flower_generator.name=Травоядный поглотитель
tile.naturesaura.placer.name=Незаметный строитель
tile.naturesaura.hopper_upgrade.name=Улучшенная воронка
tile.naturesaura.field_creator.name=Создатель поля ауры
tile.naturesaura.oak_generator.name=Уменьшитель купола
tile.naturesaura.infused_iron_block.name=Инфузионный железный блок
tile.naturesaura.offering_table.name=Стол подношения
tile.naturesaura.pickup_stopper.name=Предметный заземлитель
tile.naturesaura.spawn_lamp.name=Лампа святилища
tile.naturesaura.animal_generator.name=Распутыватель смертных
tile.naturesaura.end_flower.name=Роза забвения
tile.naturesaura.grated_chute.name=Искусная воронка
tile.naturesaura.animal_spawner.name=Алтарь рождения
tile.naturesaura.auto_crafter.name=Автоматический конструктор
tile.naturesaura.gold_brick.name=Золотые каменные кирпичи
tile.naturesaura.rf_converter.name=Энергетическая аура кузницы
tile.naturesaura.moss_generator.name=Болотный Хоми
tile.naturesaura.time_changer.name=Изменяющиеся солнечные часы
tile.naturesaura.generator_limit_remover.name=Творческий катализатор
tile.naturesaura.ender_crate.name=Эндер ящик
tile.naturesaura.powder_placer.name=Порошковый манипулятор
tile.naturesaura.firework_generator.name=Взгляд фейерверка
tile.naturesaura.chunk_loader.name=Мировой глаз
tile.naturesaura.dimension_rail_overworld.name=Рельса верхнего мира
tile.naturesaura.dimension_rail_end.name=Рельса эндера
tile.naturesaura.dimension_rail_nether.name=Рельса нижнего мира
tile.naturesaura.projectile_generator.name=Стрельбище в метку
item.naturesaura.eye.name=Экологический глаз
item.naturesaura.eye_improved.name=Экологический окуляр
item.naturesaura.gold_fiber.name=Блестящее волокно
item.naturesaura.gold_leaf.name=Золотой лист
item.naturesaura.infused_iron.name=Инфузионное железо
item.naturesaura.infused_iron_pickaxe.name=Кирка ботаника
item.naturesaura.infused_iron_axe.name=Топор ботаника
item.naturesaura.infused_iron_shovel.name=Лопата ботаника
item.naturesaura.infused_iron_sword.name=Меч ботаника
item.naturesaura.infused_iron_hoe.name=Мотыга ботаника
item.naturesaura.ancient_stick.name=Палочка из древнего дерева
item.naturesaura.aura_cache.name=Кэш ауры
item.naturesaura.color_changer.name=Ведро бесконечного цвета
item.naturesaura.book.name=Книга природной ауры
item.naturesaura.shockwave_creator.name=Амулет гнева
item.naturesaura.multiblock_maker.name=Многоблочный создатель
item.naturesaura.aura_bottle.naturesaura:overworld.name=Бутилированный солнечный свет
item.naturesaura.aura_bottle.naturesaura:nether.name=Бутилированные призраки
item.naturesaura.aura_bottle.naturesaura:end.name=Бутилированная тьма
item.naturesaura.aura_bottle.naturesaura:other.name=Бутилированное вещество
item.naturesaura.farming_stencil.name=Фермерский трафарет
item.naturesaura.bottle_two_the_rebottling.name=Бутылка и пробка
item.naturesaura.sky_ingot.name=Слиток небес
item.naturesaura.calling_spirit.name=Дух призыва
item.naturesaura.birth_spirit.name=Дух рождения
item.naturesaura.infused_iron_helmet.name=Шлем ботаника
item.naturesaura.infused_iron_chest.name=Нагрудник ботаника
item.naturesaura.infused_iron_pants.name=Поножи ботаника
item.naturesaura.infused_iron_shoes.name=Ботинки ботаника
item.naturesaura.effect_powder.naturesaura:plant_boost.name=Порошок устойчивого роста
item.naturesaura.effect_powder.naturesaura:cache_recharge.name=Порошок без хранения
item.naturesaura.effect_powder.naturesaura:animal.name=Порошок плодородия
item.naturesaura.effect_powder.naturesaura:ore_spawn.name=Порошок обильного ядра
item.naturesaura.mover_cart.name=Вагонетка притягивания ауры
item.naturesaura.range_visualizer.name=Мистическая лупа
item.naturesaura.clock_hand.name=Рука времени
item.naturesaura.token_anger.name=Знак гнева
item.naturesaura.token_euphoria.name=Знак эйфории
item.naturesaura.token_fear.name=Знак страха
item.naturesaura.token_grief.name=Знак горя
item.naturesaura.token_joy.name=Знак радости
item.naturesaura.token_rage.name=Знак ярости
item.naturesaura.token_sorrow.name=Знак скорби
item.naturesaura.token_terror.name=Знак террора
item.naturesaura.ender_access.name=Эндер окуляр
item.naturesaura.cave_finder.name=Посох Теней
item.naturesaura.aura_trove.name=Аура сокровищница
container.naturesaura.tree_ritual.name=Ритуал леса
container.naturesaura.altar.name=Инфузия природного алтаря
container.naturesaura.offering.name=Подношения богам
container.naturesaura.animal_spawner.name=Алтарь рождения
info.naturesaura.aura_in_area=Аура вокруг
info.naturesaura.book.landing=$(aura) сложная материя, и создавать, собирать и использовать ее может быть трудно.$(br)$(item)Книга природной ауры$() содержит всю информацию, необходимую для этого.
info.naturesaura.book.subtitle=Руководство по природной ауре
info.naturesaura.stored_pos=Вы записываете позицию
info.naturesaura.connected=Вы делаете соединение
info.naturesaura.same_position=Это похоже на позицию из ваших заметок...
info.naturesaura.too_far=Расстояние кажется слишком большим...
info.naturesaura.stored_pos_gone=Ваши заметки кажутся устаревшими...
info.naturesaura.empty=Пусто
info.naturesaura.ender_crate=Эндер ящик: %s
info.naturesaura.ender_access=Эндер окуляр: %s
info.naturesaura.ender_name.missing=Нет эндер названия
info.naturesaura.ender_name=Эндер название: %s
info.naturesaura.range_visualizer.start=Вы принимаете во внимание усиление...
info.naturesaura.range_visualizer.end=Вы теряете фокус увеличения...
info.naturesaura.range_visualizer.end_all=Вы теряете фокус всех увеличений...
advancement.naturesaura.root=Природная аура
advancement.naturesaura.root.desc=Стать волшебным ботаником
advancement.naturesaura.get_book=Страницы открытия
advancement.naturesaura.get_book.desc=Создайте книгу природной ауры
advancement.naturesaura.gold_leaf=Time = Блеск
advancement.naturesaura.gold_leaf.desc=Создайте и соберите блестящее дерево
advancement.naturesaura.wood_stand=Силы леса
advancement.naturesaura.wood_stand.desc=Создайте деревянную подставку для ритуала леса
advancement.naturesaura.altar=Наделенный силой
advancement.naturesaura.altar.desc=Создайте природный алтарь, используя ритуал леса
advancement.naturesaura.infused_materials=Железный завод
advancement.naturesaura.infused_materials.desc=Используйте природный алтарь для создания инфузионного железа
advancement.naturesaura.furnace_heater=Уютное тепло
advancement.naturesaura.furnace_heater.desc=Создайте внешний поджигатель, чтобы нагреть вашу печь
advancement.naturesaura.placer=Хлоп-хлоп размещение
advancement.naturesaura.placer.desc=Создайте незаметный строитель, чтобы разместить блоки для вас
advancement.naturesaura.conversion_catalyst=Не такой эквивалентный обмен
advancement.naturesaura.conversion_catalyst.desc=Создайте конверсионный катализатор для легкой конверсии материала
advancement.naturesaura.infused_tools=Готовьтесь усиливается
advancement.naturesaura.infused_tools.desc=Создайте инфузионную железную кирку и меч
advancement.naturesaura.aura_bottle_overworld=Вкус солнечного света
advancement.naturesaura.aura_bottle_overworld.desc=Соберите ауру, используя бутылку в верхнем мире
advancement.naturesaura.aura_bottle_nether=Жуткие страшные скелеты
advancement.naturesaura.aura_bottle_nether.desc=Соберите ауру, используя бутылку в нижнем мире
advancement.naturesaura.aura_bottle_end=Дыхание окрестности
advancement.naturesaura.aura_bottle_end.desc=Соберите ауру, используя бутылку в энде
advancement.naturesaura.offering=Эй Боже, ты хочешь это?
advancement.naturesaura.offering.desc=Создать стол подношений для подношения богам
advancement.naturesaura.sky_ingot=Крепкий и легкий
advancement.naturesaura.sky_ingot.desc=Создайте слиток небес, используя подношение богам
advancement.naturesaura.aura_cache=Кэширование
advancement.naturesaura.aura_cache.desc=Создайте кэш ауры для хранения ауры в вашем инвентаре
advancement.naturesaura.positive_imbalance=Сочные окрестности
advancement.naturesaura.positive_imbalance.desc=Создайте достаточно ауры, чтобы вызвать положительный эффект дисбаланса
advancement.naturesaura.negative_imbalance=Смертельный день
advancement.naturesaura.negative_imbalance.desc=Слейте достаточно ауры, чтобы вызвать негативные последствия дисбаланса
advancement.naturesaura.end_flower=Синий лотос
advancement.naturesaura.end_flower.desc=Убейте дракона края, чтобы вырастить розу забвения
advancement.naturesaura.eye=Внезапно я вижу
advancement.naturesaura.eye.desc=Создайте экологический глаз, чтобы увидеть ауру в области
advancement.naturesaura.eye_improved=Внезапно я вижу намного лучше
advancement.naturesaura.eye_improved.desc=Создайте экологический окуляр, чтобы увидеть эффекты дисбаланса ауры
advancement.naturesaura.range_visualizer=Я шпионю своим маленьким глазом
advancement.naturesaura.range_visualizer.desc=Создайте мистическую лупу, чтобы увидеть диапазон ваших устройств
command.naturesaura.aura.usage=/naaura store|drain <amount> [range] ИЛИ /naaura reset <range>
potion.naturesaura.breathless.name=Дыхание
entity.naturesaura.effect_inhibitor.name=Эффектный порошок
entity.naturesaura.mover_cart.name=Вагонетка притягивания ауры

View file

@ -1,109 +1,109 @@
{ {
"itemGroup.naturesaura": "Nature's Aura", "itemGroup.naturesaura": "Nature's Aura",
"tile.naturesaura.ancient_log.name": "Древнее дерево", "block.naturesaura.ancient_log": "Древнее дерево",
"tile.naturesaura.ancient_bark.name": "Древняя кора", "block.naturesaura.ancient_bark": "Древняя кора",
"tile.naturesaura.ancient_leaves.name": "Древние листья", "block.naturesaura.ancient_leaves": "Древние листья",
"tile.naturesaura.ancient_sapling.name": "Древний cаженец", "block.naturesaura.ancient_sapling": "Древний cаженец",
"tile.naturesaura.nature_altar.name": "Природный алтарь", "block.naturesaura.nature_altar": "Природный алтарь",
"tile.naturesaura.decayed_leaves.name": "Гнилые листья", "block.naturesaura.decayed_leaves": "Гнилые листья",
"tile.naturesaura.golden_leaves.name": "Золотые листья", "block.naturesaura.golden_leaves": "Золотые листья",
"tile.naturesaura.gold_powder.name": "Золотой порошок", "block.naturesaura.gold_powder": "Золотой порошок",
"tile.naturesaura.wood_stand.name": "Деревянная подставка", "block.naturesaura.wood_stand": "Деревянная подставка",
"tile.naturesaura.ancient_planks.name": "Древние доски", "block.naturesaura.ancient_planks": "Древние доски",
"tile.naturesaura.infused_stone.name": "Инфузионный камень", "block.naturesaura.infused_stone": "Инфузионный камень",
"tile.naturesaura.furnace_heater.name": "Внешний поджигатель", "block.naturesaura.furnace_heater": "Внешний поджигатель",
"tile.naturesaura.potion_generator.name": "Затяжной поглотитель", "block.naturesaura.potion_generator": "Затяжной поглотитель",
"tile.naturesaura.aura_detector.name": "Детектор ауры", "block.naturesaura.aura_detector": "Детектор ауры",
"tile.naturesaura.conversion_catalyst.name": "Трансмутационный катализатор", "block.naturesaura.conversion_catalyst": "Трансмутационный катализатор",
"tile.naturesaura.crushing_catalyst.name": "Разрушающий катализатор", "block.naturesaura.crushing_catalyst": "Разрушающий катализатор",
"tile.naturesaura.infused_stairs.name": "Ступеньки из инфузионного камня", "block.naturesaura.infused_stairs": "Ступеньки из инфузионного камня",
"tile.naturesaura.infused_slab.name": "Плита из инфузионного камня", "block.naturesaura.infused_slab": "Плита из инфузионного камня",
"tile.naturesaura.infused_slab_double.name": "Двойная плита из инфузионного камня", "block.naturesaura.infused_slab_double": "Двойная плита из инфузионного камня",
"tile.naturesaura.ancient_stairs.name": "Ступеньки из древнего дерева", "block.naturesaura.ancient_stairs": "Ступеньки из древнего дерева",
"tile.naturesaura.ancient_slab.name": "Плита из древнего дерева", "block.naturesaura.ancient_slab": "Плита из древнего дерева",
"tile.naturesaura.ancient_slab_double.name": "Двойная плита из древнего дерева", "block.naturesaura.ancient_slab_double": "Двойная плита из древнего дерева",
"tile.naturesaura.infused_brick.name": "Инфузионный кирпич", "block.naturesaura.infused_brick": "Инфузионный кирпич",
"tile.naturesaura.infused_brick_stairs.name": "Ступеньки из инфузионного кирпича", "block.naturesaura.infused_brick_stairs": "Ступеньки из инфузионного кирпича",
"tile.naturesaura.infused_brick_slab.name": "Плита из инфузионного кирпича", "block.naturesaura.infused_brick_slab": "Плита из инфузионного кирпича",
"tile.naturesaura.infused_brick_slab_double.name": "Двойная плита из инфузионного кирпича", "block.naturesaura.infused_brick_slab_double": "Двойная плита из инфузионного кирпича",
"tile.naturesaura.flower_generator.name": "Травоядный поглотитель", "block.naturesaura.flower_generator": "Травоядный поглотитель",
"tile.naturesaura.placer.name": "Незаметный строитель", "block.naturesaura.placer": "Незаметный строитель",
"tile.naturesaura.hopper_upgrade.name": "Улучшенная воронка", "block.naturesaura.hopper_upgrade": "Улучшенная воронка",
"tile.naturesaura.field_creator.name": "Создатель поля ауры", "block.naturesaura.field_creator": "Создатель поля ауры",
"tile.naturesaura.oak_generator.name": "Уменьшитель купола", "block.naturesaura.oak_generator": "Уменьшитель купола",
"tile.naturesaura.infused_iron_block.name": "Инфузионный железный блок", "block.naturesaura.infused_iron_block": "Инфузионный железный блок",
"tile.naturesaura.offering_table.name": "Стол подношения", "block.naturesaura.offering_table": "Стол подношения",
"tile.naturesaura.pickup_stopper.name": "Предметный заземлитель", "block.naturesaura.pickup_stopper": "Предметный заземлитель",
"tile.naturesaura.spawn_lamp.name": "Лампа святилища", "block.naturesaura.spawn_lamp": "Лампа святилища",
"tile.naturesaura.animal_generator.name": "Распутыватель смертных", "block.naturesaura.animal_generator": "Распутыватель смертных",
"tile.naturesaura.end_flower.name": "Роза забвения", "block.naturesaura.end_flower": "Роза забвения",
"tile.naturesaura.grated_chute.name": "Искусная воронка", "block.naturesaura.grated_chute": "Искусная воронка",
"tile.naturesaura.animal_spawner.name": "Алтарь рождения", "block.naturesaura.animal_spawner": "Алтарь рождения",
"tile.naturesaura.auto_crafter.name": "Автоматический конструктор", "block.naturesaura.auto_crafter": "Автоматический конструктор",
"tile.naturesaura.gold_brick.name": "Золотые каменные кирпичи", "block.naturesaura.gold_brick": "Золотые каменные кирпичи",
"tile.naturesaura.rf_converter.name": "Энергетическая аура кузницы", "block.naturesaura.rf_converter": "Энергетическая аура кузницы",
"tile.naturesaura.moss_generator.name": "Болотный Хоми", "block.naturesaura.moss_generator": "Болотный Хоми",
"tile.naturesaura.time_changer.name": "Изменяющиеся солнечные часы", "block.naturesaura.time_changer": "Изменяющиеся солнечные часы",
"tile.naturesaura.generator_limit_remover.name": "Творческий катализатор", "block.naturesaura.generator_limit_remover": "Творческий катализатор",
"tile.naturesaura.ender_crate.name": "Эндер ящик", "block.naturesaura.ender_crate": "Эндер ящик",
"tile.naturesaura.powder_placer.name": "Порошковый манипулятор", "block.naturesaura.powder_placer": "Порошковый манипулятор",
"tile.naturesaura.firework_generator.name": "Взгляд фейерверка", "block.naturesaura.firework_generator": "Взгляд фейерверка",
"tile.naturesaura.chunk_loader.name": "Мировой глаз", "block.naturesaura.chunk_loader": "Мировой глаз",
"tile.naturesaura.dimension_rail_overworld.name": "Рельса верхнего мира", "block.naturesaura.dimension_rail_overworld": "Рельса верхнего мира",
"tile.naturesaura.dimension_rail_end.name": "Рельса эндера", "block.naturesaura.dimension_rail_end": "Рельса эндера",
"tile.naturesaura.dimension_rail_nether.name": "Рельса нижнего мира", "block.naturesaura.dimension_rail_nether": "Рельса нижнего мира",
"tile.naturesaura.projectile_generator.name": "Стрельбище в метку", "block.naturesaura.projectile_generator": "Стрельбище в метку",
"item.naturesaura.eye.name": "Экологический глаз", "item.naturesaura.eye": "Экологический глаз",
"item.naturesaura.eye_improved.name": "Экологический окуляр", "item.naturesaura.eye_improved": "Экологический окуляр",
"item.naturesaura.gold_fiber.name": "Блестящее волокно", "item.naturesaura.gold_fiber": "Блестящее волокно",
"item.naturesaura.gold_leaf.name": "Золотой лист", "item.naturesaura.gold_leaf": "Золотой лист",
"item.naturesaura.infused_iron.name": "Инфузионное железо", "item.naturesaura.infused_iron": "Инфузионное железо",
"item.naturesaura.infused_iron_pickaxe.name": "Кирка ботаника", "item.naturesaura.infused_iron_pickaxe": "Кирка ботаника",
"item.naturesaura.infused_iron_axe.name": "Топор ботаника", "item.naturesaura.infused_iron_axe": "Топор ботаника",
"item.naturesaura.infused_iron_shovel.name": "Лопата ботаника", "item.naturesaura.infused_iron_shovel": "Лопата ботаника",
"item.naturesaura.infused_iron_sword.name": "Меч ботаника", "item.naturesaura.infused_iron_sword": "Меч ботаника",
"item.naturesaura.infused_iron_hoe.name": "Мотыга ботаника", "item.naturesaura.infused_iron_hoe": "Мотыга ботаника",
"item.naturesaura.ancient_stick.name": "Палочка из древнего дерева", "item.naturesaura.ancient_stick": "Палочка из древнего дерева",
"item.naturesaura.aura_cache.name": "Кэш ауры", "item.naturesaura.aura_cache": "Кэш ауры",
"item.naturesaura.color_changer.name": "Ведро бесконечного цвета", "item.naturesaura.color_changer": "Ведро бесконечного цвета",
"item.naturesaura.book.name": "Книга природной ауры", "item.naturesaura.book": "Книга природной ауры",
"item.naturesaura.shockwave_creator.name": "Амулет гнева", "item.naturesaura.shockwave_creator": "Амулет гнева",
"item.naturesaura.multiblock_maker.name": "Многоблочный создатель", "item.naturesaura.multiblock_maker": "Многоблочный создатель",
"item.naturesaura.aura_bottle.naturesaura:overworld.name": "Бутилированный солнечный свет", "item.naturesaura.aura_bottle.naturesaura:overworld": "Бутилированный солнечный свет",
"item.naturesaura.aura_bottle.naturesaura:nether.name": "Бутилированные призраки", "item.naturesaura.aura_bottle.naturesaura:nether": "Бутилированные призраки",
"item.naturesaura.aura_bottle.naturesaura:end.name": "Бутилированная тьма", "item.naturesaura.aura_bottle.naturesaura:end": "Бутилированная тьма",
"item.naturesaura.aura_bottle.naturesaura:other.name": "Бутилированное вещество", "item.naturesaura.aura_bottle.naturesaura:other": "Бутилированное вещество",
"item.naturesaura.farming_stencil.name": "Фермерский трафарет", "item.naturesaura.farming_stencil": "Фермерский трафарет",
"item.naturesaura.bottle_two_the_rebottling.name": "Бутылка и пробка", "item.naturesaura.bottle_two_the_rebottling": "Бутылка и пробка",
"item.naturesaura.sky_ingot.name": "Слиток небес", "item.naturesaura.sky_ingot": "Слиток небес",
"item.naturesaura.calling_spirit.name": "Дух призыва", "item.naturesaura.calling_spirit": "Дух призыва",
"item.naturesaura.birth_spirit.name": "Дух рождения", "item.naturesaura.birth_spirit": "Дух рождения",
"item.naturesaura.infused_iron_helmet.name": "Шлем ботаника", "item.naturesaura.infused_iron_helmet": "Шлем ботаника",
"item.naturesaura.infused_iron_chest.name": "Нагрудник ботаника", "item.naturesaura.infused_iron_chest": "Нагрудник ботаника",
"item.naturesaura.infused_iron_pants.name": "Поножи ботаника", "item.naturesaura.infused_iron_pants": "Поножи ботаника",
"item.naturesaura.infused_iron_shoes.name": "Ботинки ботаника", "item.naturesaura.infused_iron_shoes": "Ботинки ботаника",
"item.naturesaura.effect_powder.naturesaura:plant_boost.name": "Порошок устойчивого роста", "item.naturesaura.effect_powder.naturesaura:plant_boost": "Порошок устойчивого роста",
"item.naturesaura.effect_powder.naturesaura:cache_recharge.name": "Порошок без хранения", "item.naturesaura.effect_powder.naturesaura:cache_recharge": "Порошок без хранения",
"item.naturesaura.effect_powder.naturesaura:animal.name": "Порошок плодородия", "item.naturesaura.effect_powder.naturesaura:animal": "Порошок плодородия",
"item.naturesaura.effect_powder.naturesaura:ore_spawn.name": "Порошок обильного ядра", "item.naturesaura.effect_powder.naturesaura:ore_spawn": "Порошок обильного ядра",
"item.naturesaura.mover_cart.name": "Вагонетка притягивания ауры", "item.naturesaura.mover_cart": "Вагонетка притягивания ауры",
"item.naturesaura.range_visualizer.name": "Мистическая лупа", "item.naturesaura.range_visualizer": "Мистическая лупа",
"item.naturesaura.clock_hand.name": "Рука времени", "item.naturesaura.clock_hand": "Рука времени",
"item.naturesaura.token_anger.name": "Знак гнева", "item.naturesaura.token_anger": "Знак гнева",
"item.naturesaura.token_euphoria.name": "Знак эйфории", "item.naturesaura.token_euphoria": "Знак эйфории",
"item.naturesaura.token_fear.name": "Знак страха", "item.naturesaura.token_fear": "Знак страха",
"item.naturesaura.token_grief.name": "Знак горя", "item.naturesaura.token_grief": "Знак горя",
"item.naturesaura.token_joy.name": "Знак радости", "item.naturesaura.token_joy": "Знак радости",
"item.naturesaura.token_rage.name": "Знак ярости", "item.naturesaura.token_rage": "Знак ярости",
"item.naturesaura.token_sorrow.name": "Знак скорби", "item.naturesaura.token_sorrow": "Знак скорби",
"item.naturesaura.token_terror.name": "Знак террора", "item.naturesaura.token_terror": "Знак террора",
"item.naturesaura.ender_access.name": "Эндер окуляр", "item.naturesaura.ender_access": "Эндер окуляр",
"item.naturesaura.cave_finder.name": "Посох Теней", "item.naturesaura.cave_finder": "Посох Теней",
"item.naturesaura.aura_trove.name": "Аура сокровищница", "item.naturesaura.aura_trove": "Аура сокровищница",
"container.naturesaura.tree_ritual.name": "Ритуал леса", "container.naturesaura.tree_ritual": "Ритуал леса",
"container.naturesaura.altar.name": "Инфузия природного алтаря", "container.naturesaura.altar": "Инфузия природного алтаря",
"container.naturesaura.offering.name": "Подношения богам", "container.naturesaura.offering": "Подношения богам",
"container.naturesaura.animal_spawner.name": "Алтарь рождения", "container.naturesaura.animal_spawner": "Алтарь рождения",
"info.naturesaura.aura_in_area": "Аура вокруг", "info.naturesaura.aura_in_area": "Аура вокруг",
"info.naturesaura.book.landing": "$(aura) сложная материя, и создавать, собирать и использовать ее может быть трудно.$(br)$(item)Книга природной ауры$() содержит всю информацию, необходимую для этого.", "info.naturesaura.book.landing": "$(aura) сложная материя, и создавать, собирать и использовать ее может быть трудно.$(br)$(item)Книга природной ауры$() содержит всю информацию, необходимую для этого.",
"info.naturesaura.book.subtitle": "Руководство по природной ауре", "info.naturesaura.book.subtitle": "Руководство по природной ауре",
@ -165,7 +165,7 @@
"advancement.naturesaura.range_visualizer": "Я шпионю своим маленьким глазом", "advancement.naturesaura.range_visualizer": "Я шпионю своим маленьким глазом",
"advancement.naturesaura.range_visualizer.desc": "Создайте мистическую лупу, чтобы увидеть диапазон ваших устройств", "advancement.naturesaura.range_visualizer.desc": "Создайте мистическую лупу, чтобы увидеть диапазон ваших устройств",
"command.naturesaura.aura.usage": "/naaura store|drain <amount> [range] ИЛИ /naaura reset <range>", "command.naturesaura.aura.usage": "/naaura store|drain <amount> [range] ИЛИ /naaura reset <range>",
"potion.naturesaura.breathless.name": "Дыхание", "potion.naturesaura.breathless": "Дыхание",
"entity.naturesaura.effect_inhibitor.name": "Эффектный порошок", "entity.naturesaura.effect_inhibitor": "Эффектный порошок",
"entity.naturesaura.mover_cart.name": "Вагонетка притягивания ауры" "entity.naturesaura.mover_cart": "Вагонетка притягивания ауры"
} }