Compare commits

...

10 Commits

Author SHA1 Message Date
9dde7b4288 1.0.4
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-09-10 19:10:56 -04:00
40de5445d1 1.0.3
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-09-06 10:41:30 -04:00
643e287e23 1.0.2
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-08-31 19:19:54 -04:00
e5135deef1 Add Veridium Block To Beacon Base Blocks Tag
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-08-30 19:10:33 -04:00
7cb97d4bb6 1.0.1
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-08-30 17:18:29 -04:00
a754b43b7c Merge pull request 'fix up ru_ru.lang' (#3) from Yoghurt4C/EnergonRelics:webedit-1 into master
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-08-29 21:37:00 +00:00
Yoghurt4C
89b42442fd Either Hot Shit or Total Bollocks 2020-08-27 13:48:32 +00:00
Yoghurt4C
ac1c09cc5f Update 'src/main/resources/assets/energonrelics/lang/ru_ru.json' 2020-08-27 13:21:16 +00:00
8e1712e64c 1.0.0
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-08-26 21:12:47 -04:00
3f59e506a4 0.2.2
All checks were successful
EnergonRelics/pipeline/head This commit looks good
2020-08-22 12:17:00 -04:00
44 changed files with 436 additions and 87 deletions

View File

@ -1,5 +1,25 @@
# Changelog # Changelog
**1.0.4**
* Fix Crash When Sneak-Using Dye On A Block
**1.0.3**
* Fix Gravity Crash
**1.0.2**
* Attempt To Fix Structure Generation Crash
**1.0.1**
* Add Advancements
* Industrial Laser Can Smelt Nether Gold Ore
* Rework Network Chip Recipe
**1.0.8**
* Update Textures
**Beta 0.2.2**
* Update To Fabric Structure API
**Beta 0.2.1** **Beta 0.2.1**
* Fix Solar Panel Crash * Fix Solar Panel Crash

View File

@ -45,9 +45,6 @@ dependencies {
modImplementation "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig_version}" modImplementation "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig_version}"
include "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig_version}" include "me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig_version}"
modImplementation "net.earthcomputer:libstructure:${project.libstructure_version}"
include "net.earthcomputer:libstructure:${project.libstructure_version}"
compileOnly "org.jetbrains:annotations:${project.jetbrains_annotations_version}" compileOnly "org.jetbrains:annotations:${project.jetbrains_annotations_version}"
} }

27
docs/API.md Normal file
View File

@ -0,0 +1,27 @@
# API
The public API is in the package ``com.thebrokenrail.energonrelics.api``. Any registries are located in the package ``com.thebrokenrail.energonrelics.registry``. Anything else should be treated as unstable and may change at any moment.
## Setup
### ``build.gradle``
```gradle
repositories {
maven { url 'https://maven.thebrokenrail.com' }
}
dependencies {
modImplementation 'com.thebrokenrail:energonrelics:VERSION'
// VERSION = "<Mod Version>+<MC Version>", for example "1.0.0+1.16.2"
}
```
### ``fabric.mod.json``
```json
{
"depends": {
"energonrelics": "1.0.x"
}
}
```
## JavaDoc
[View JavaDoc](https://jenkins.thebrokenrail.com/job/EnergonRelics/job/master/JavaDoc/)

View File

@ -6,4 +6,6 @@
[View Blocks](BLOCKS.md) [View Blocks](BLOCKS.md)
[View Structures](STRUCTURES.md) [View Structures](STRUCTURES.md)
[View API](API.md)

View File

@ -6,19 +6,18 @@ org.gradle.jvmargs = -Xmx1G
minecraft_version = 1.16.2 minecraft_version = 1.16.2
curseforge_id = 398250 curseforge_id = 398250
simple_minecraft_version = 1.16.2 simple_minecraft_version = 1.16.2
yarn_build = 6 yarn_build = 21
fabric_loader_version = 0.9.0+build.204 fabric_loader_version = 0.9.2+build.206
# Mod Properties # Mod Properties
mod_version = 0.2.1 mod_version = 1.0.4
maven_group = com.thebrokenrail maven_group = com.thebrokenrail
# Dependencies # Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
fabric_api_version = 0.17.2+build.396-1.16 fabric_api_version = 0.19.0+build.398-1.16
modmenu_version = 1.14.6+build.31 modmenu_version = 1.14.6+build.31
cloth_config_version = 4.7.0-unstable cloth_config_version = 4.7.0-unstable
autoconfig_version = 3.2.0-unstable autoconfig_version = 3.2.0-unstable
libstructure_version = 1.5
roughlyenoughitems_version = 5.2.3 roughlyenoughitems_version = 5.2.3
jetbrains_annotations_version = 19.0.0 jetbrains_annotations_version = 19.0.0

View File

@ -14,8 +14,7 @@ import java.util.Objects;
/** /**
* Energy Ticker * Energy Ticker
*/ */
@ApiStatus.Internal public final class EnergyTicker {
public class EnergyTicker {
private static final List<EnergyTickable> scheduled = new ArrayList<>(); private static final List<EnergyTickable> scheduled = new ArrayList<>();
private static List<EnergyTickable> allLoaded = Collections.emptyList(); private static List<EnergyTickable> allLoaded = Collections.emptyList();
@ -33,6 +32,7 @@ public class EnergyTicker {
* Schedule For Next Energy Tick * Schedule For Next Energy Tick
* @param tickable Object To Tick * @param tickable Object To Tick
*/ */
@ApiStatus.Internal
public static void schedule(EnergyTickable tickable) { public static void schedule(EnergyTickable tickable) {
scheduled.add(tickable); scheduled.add(tickable);
} }
@ -41,6 +41,7 @@ public class EnergyTicker {
* Tick Energy * Tick Energy
* @param world World * @param world World
*/ */
@ApiStatus.Internal
public static void tick(World world) { public static void tick(World world) {
if (Objects.requireNonNull(world.getServer()).getThread() == Thread.currentThread()) { if (Objects.requireNonNull(world.getServer()).getThread() == Thread.currentThread()) {
world.getProfiler().push(EnergonRelics.NAMESPACE); world.getProfiler().push(EnergonRelics.NAMESPACE);

View File

@ -3,7 +3,7 @@ package com.thebrokenrail.energonrelics.api.item;
import net.minecraft.text.MutableText; import net.minecraft.text.MutableText;
/** /**
* Implement To Provide Extra Information In Multimeter * Implement To Provide Extra Information In Multimeter Output
*/ */
public interface MultimeterExtra { public interface MultimeterExtra {
/** /**

View File

@ -106,15 +106,17 @@ public class PhaseShifterBlock extends EnergyBlock {
UseBlockCallback.EVENT.register((player, world, hand, hit) -> { UseBlockCallback.EVENT.register((player, world, hand, hit) -> {
if (!player.isSpectator() && player.shouldCancelInteraction()) { if (!player.isSpectator() && player.shouldCancelInteraction()) {
BlockState state = world.getBlockState(hit.getBlockPos()); BlockState state = world.getBlockState(hit.getBlockPos());
ItemStack stack = player.getStackInHand(hand); if (state.getBlock() == PhaseShifterBlock.this) {
if (stack.getItem() instanceof DyeItem) { ItemStack stack = player.getStackInHand(hand);
DyeColor newColor = ((DyeItem) stack.getItem()).getColor(); if (stack.getItem() instanceof DyeItem) {
if (state.get(PhaseShifterBlock.COLOR) != newColor) { DyeColor newColor = ((DyeItem) stack.getItem()).getColor();
world.setBlockState(hit.getBlockPos(), state.with(PhaseShifterBlock.COLOR, newColor)); if (state.get(PhaseShifterBlock.COLOR) != newColor) {
if (!player.isCreative()) { world.setBlockState(hit.getBlockPos(), state.with(PhaseShifterBlock.COLOR, newColor));
stack.decrement(1); if (!player.isCreative()) {
stack.decrement(1);
}
return ActionResult.SUCCESS;
} }
return ActionResult.SUCCESS;
} }
} }
} }

View File

@ -26,7 +26,7 @@ public class SolarPanelBlockEntity extends EnergyGeneratorBlockEntity {
for (Direction side : Direction.values()) { for (Direction side : Direction.values()) {
light = Math.max(light, getLight(side)); light = Math.max(light, getLight(side));
} }
return (int) (((float) light) * Math.min(0, MathHelper.cos(Objects.requireNonNull(getWorld()).getSkyAngleRadians(1f)))); return (int) (((float) light) * Math.max(0, MathHelper.cos(Objects.requireNonNull(getWorld()).getSkyAngleRadians(1f))));
} }
@Override @Override

View File

@ -21,13 +21,13 @@ import net.minecraft.world.explosion.Explosion;
import java.util.Objects; import java.util.Objects;
public class IndustrialLaserBlockEntity extends FieldProjectorBlockEntity { public class IndustrialLaserProjectorBlockEntity extends FieldProjectorBlockEntity {
private BlockPos targetPos; private BlockPos targetPos;
private BlockState targetState; private BlockState targetState;
private int progress = 0; private int progress = 0;
public IndustrialLaserBlockEntity(BlockEntityType<?> type) { public IndustrialLaserProjectorBlockEntity(BlockEntityType<?> type) {
super(type, state -> EnergonRelics.Blocks.INDUSTRIAL_LASER); super(type, state -> EnergonRelics.Blocks.INDUSTRIAL_LASER);
} }

View File

@ -1,6 +1,6 @@
package com.thebrokenrail.energonrelics.block.forcefield.laser; package com.thebrokenrail.energonrelics.block.forcefield.laser;
import com.thebrokenrail.energonrelics.block.entity.forcefield.laser.IndustrialLaserBlockEntity; import com.thebrokenrail.energonrelics.block.entity.forcefield.laser.IndustrialLaserProjectorBlockEntity;
import com.thebrokenrail.energonrelics.block.forcefield.util.FieldProjectorBlock; import com.thebrokenrail.energonrelics.block.forcefield.util.FieldProjectorBlock;
import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.entity.BlockEntityType;
@ -14,6 +14,6 @@ public class IndustrialLaserProjectorBlock extends FieldProjectorBlock {
@Override @Override
protected Function<BlockEntityType<BlockEntity>, BlockEntity> getFactory() { protected Function<BlockEntityType<BlockEntity>, BlockEntity> getFactory() {
return IndustrialLaserBlockEntity::new; return IndustrialLaserProjectorBlockEntity::new;
} }
} }

View File

@ -5,8 +5,8 @@ import com.thebrokenrail.energonrelics.block.entity.structure.StructureGenerator
import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity; import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.structure.researchcomplex.ResearchComplexStartPart; import com.thebrokenrail.energonrelics.structure.researchcomplex.ResearchComplexStartPart;
import com.thebrokenrail.energonrelics.structure.researchcomplex.ResearchComplexState; import com.thebrokenrail.energonrelics.structure.researchcomplex.ResearchComplexState;
import net.earthcomputer.libstructure.LibStructure;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.structure.v1.FabricStructureBuilder;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
@ -23,6 +23,7 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.GenerationStep;
@ -100,11 +101,11 @@ public class StructureGeneratorBlock extends SimpleBlockWithEntity {
public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) { public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean notify) {
super.onBlockAdded(state, world, pos, oldState, notify); super.onBlockAdded(state, world, pos, oldState, notify);
if (world instanceof ServerWorld) { if (world instanceof ServerWorld) {
schedule(world, pos); schedule((ServerWorld) world, pos);
} }
} }
public void schedule(World world, BlockPos pos) { public void schedule(StructureWorldAccess world, BlockPos pos) {
world.getBlockTickScheduler().schedule(pos, this, 0); world.getBlockTickScheduler().schedule(pos, this, 0);
} }
@ -119,7 +120,7 @@ public class StructureGeneratorBlock extends SimpleBlockWithEntity {
blocks.put(name, block); blocks.put(name, block);
Registry.register(Registry.STRUCTURE_PIECE, new Identifier(EnergonRelics.NAMESPACE, name + "_piece"), block.piece); Registry.register(Registry.STRUCTURE_PIECE, new Identifier(EnergonRelics.NAMESPACE, name + "_piece"), block.piece);
LibStructure.registerStructure(new Identifier(EnergonRelics.NAMESPACE, name), block.feature, GenerationStep.Feature.UNDERGROUND_STRUCTURES, block.structureConfig, block.feature.configure(FeatureConfig.DEFAULT)); FabricStructureBuilder.create(new Identifier(EnergonRelics.NAMESPACE, name), block.feature).step(GenerationStep.Feature.UNDERGROUND_STRUCTURES).defaultConfig(block.structureConfig).superflatFeature(block.feature.configure(FeatureConfig.DEFAULT)).register();
} }
public static void registerBlocks() { public static void registerBlocks() {

View File

@ -19,17 +19,23 @@ class StructureGeneratorPiece extends StructurePiece {
private final StructureGeneratorBlock block; private final StructureGeneratorBlock block;
private final BlockRotation rotation; private final BlockRotation rotation;
private final BlockPos pos; private final BlockPos pos;
private boolean placed;
StructureGeneratorPiece(StructureGeneratorBlock block, BlockRotation rotation, BlockPos pos) { private StructureGeneratorPiece(StructureGeneratorBlock block, BlockRotation rotation, BlockPos pos, boolean placed) {
super(block.piece, 0); super(block.piece, 0);
this.block = block; this.block = block;
this.rotation = rotation; this.rotation = rotation;
this.pos = pos; this.pos = pos;
this.placed = placed;
boundingBox = BlockBox.create(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); boundingBox = BlockBox.create(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1);
} }
StructureGeneratorPiece(StructureGeneratorBlock block, BlockRotation rotation, BlockPos pos) {
this(block, rotation, pos, false);
}
StructureGeneratorPiece(StructureGeneratorBlock block, CompoundTag tag) { StructureGeneratorPiece(StructureGeneratorBlock block, CompoundTag tag) {
this(block, BlockRotation.valueOf(tag.getString("Rot")), new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z"))); this(block, BlockRotation.valueOf(tag.getString("Rot")), new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z")), tag.getBoolean("Placed"));
} }
@Override @Override
@ -38,19 +44,24 @@ class StructureGeneratorPiece extends StructurePiece {
tag.putInt("X", pos.getX()); tag.putInt("X", pos.getX());
tag.putInt("Y", pos.getY()); tag.putInt("Y", pos.getY());
tag.putInt("Z", pos.getZ()); tag.putInt("Z", pos.getZ());
tag.putBoolean("Placed", placed);
} }
@Override @Override
public boolean generate(StructureWorldAccess world, StructureAccessor structureAccessor, ChunkGenerator chunkGenerator, Random random, BlockBox boundingBox, ChunkPos chunkPos, BlockPos blockPos) { public boolean generate(StructureWorldAccess world, StructureAccessor structureAccessor, ChunkGenerator chunkGenerator, Random random, BlockBox boundingBox, ChunkPos chunkPos, BlockPos blockPos) {
BlockState state = block.getDefaultState().rotate(rotation); if (!placed) {
BlockState state = block.getDefaultState().rotate(rotation);
world.setBlockState(pos, state, 3); world.setBlockState(pos, state, 3);
BlockEntity entity = world.getBlockEntity(pos); BlockEntity entity = world.getBlockEntity(pos);
if (entity instanceof StructureGeneratorBlockEntity) { if (entity instanceof StructureGeneratorBlockEntity) {
((StructureGeneratorBlockEntity) entity).setSeed(random.nextLong()); ((StructureGeneratorBlockEntity) entity).setSeed(random.nextLong());
}
block.schedule(world, pos);
placed = true;
} }
block.schedule(world.toServerWorld(), pos);
return true; return true;
} }
} }

View File

@ -88,6 +88,7 @@ public class HighlightBlockEntityRenderer extends BlockEntityRenderer<BlockEntit
} }
} }
@SuppressWarnings("SameParameterValue")
private static void vertex(VertexConsumer consumer, Matrix4f model, float x, float y, float z) { private static void vertex(VertexConsumer consumer, Matrix4f model, float x, float y, float z) {
consumer.vertex(model, x, y, z).color(1f, 1f, 1f, 1f).next(); consumer.vertex(model, x, y, z).color(1f, 1f, 1f, 1f).next();
} }

View File

@ -5,6 +5,7 @@ import com.thebrokenrail.energonrelics.block.forcefield.util.BeamBlock;
import com.thebrokenrail.energonrelics.block.portal.PortalCooldownEntity; import com.thebrokenrail.energonrelics.block.portal.PortalCooldownEntity;
import com.thebrokenrail.energonrelics.config.HardcodedConfig; import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
@ -26,6 +27,8 @@ import java.util.function.Predicate;
public abstract class MixinEntity implements PortalCooldownEntity { public abstract class MixinEntity implements PortalCooldownEntity {
@Unique @Unique
private int energyPortalCooldown = 0; private int energyPortalCooldown = 0;
@Unique
private boolean touchingBeam = false;
@Shadow @Shadow
public abstract Box getBoundingBox(); public abstract Box getBoundingBox();
@ -53,7 +56,8 @@ public abstract class MixinEntity implements PortalCooldownEntity {
for (int q = k; q < l; ++q) { for (int q = k; q < l; ++q) {
for (int r = m; r < n; ++r) { for (int r = m; r < n; ++r) {
pos.set(p, q, r); pos.set(p, q, r);
if (test.test(getEntityWorld().getBlockState(pos).getBlock())) { BlockState state = getEntityWorld().getBlockState(pos);
if (state.getCollisionShape(getEntityWorld(), pos).isEmpty() && test.test(state.getBlock())) {
getEntityWorld().getProfiler().pop(); getEntityWorld().getProfiler().pop();
return true; return true;
} }
@ -71,7 +75,7 @@ public abstract class MixinEntity implements PortalCooldownEntity {
@Inject(at = @At("HEAD"), method = "hasNoGravity", cancellable = true) @Inject(at = @At("HEAD"), method = "hasNoGravity", cancellable = true)
public void hasNoGravity(CallbackInfoReturnable<Boolean> info) { public void hasNoGravity(CallbackInfoReturnable<Boolean> info) {
if (!saving && isTouching(block -> block instanceof BeamBlock)) { if (!saving && touchingBeam) {
info.setReturnValue(true); info.setReturnValue(true);
} }
} }
@ -92,8 +96,13 @@ public abstract class MixinEntity implements PortalCooldownEntity {
energyPortalCooldown = tag.getInt(EnergonRelics.NAMESPACE + ":EnergyPortalCooldown"); energyPortalCooldown = tag.getInt(EnergonRelics.NAMESPACE + ":EnergyPortalCooldown");
} }
@Inject(at = @At("HEAD"), method = "tick")
public void tickHead(CallbackInfo info) {
touchingBeam = isTouching(block -> block instanceof BeamBlock);
}
@Inject(at = @At("RETURN"), method = "tick") @Inject(at = @At("RETURN"), method = "tick")
public void tick(CallbackInfo info) { public void tickReturn(CallbackInfo info) {
energyPortalCooldown--; energyPortalCooldown--;
} }

View File

@ -34,7 +34,9 @@ public class IndustrialLaserRegistry {
return new ItemStack(ingot, count); return new ItemStack(ingot, count);
}); });
map.put(storage, random -> new ItemStack(ingot, HardcodedConfig.INDUSTRIAL_LASER_INGOTS_FROM_STORAGE)); if (storage != null) {
map.put(storage, random -> new ItemStack(ingot, HardcodedConfig.INDUSTRIAL_LASER_INGOTS_FROM_STORAGE));
}
} }
/** /**
@ -62,6 +64,7 @@ public class IndustrialLaserRegistry {
add(Blocks.COAL_ORE, Items.COAL, Blocks.COAL_BLOCK); add(Blocks.COAL_ORE, Items.COAL, Blocks.COAL_BLOCK);
add(Blocks.IRON_ORE, Items.IRON_INGOT, Blocks.IRON_BLOCK); add(Blocks.IRON_ORE, Items.IRON_INGOT, Blocks.IRON_BLOCK);
add(Blocks.GOLD_ORE, Items.GOLD_INGOT, Blocks.GOLD_BLOCK); add(Blocks.GOLD_ORE, Items.GOLD_INGOT, Blocks.GOLD_BLOCK);
add(Blocks.NETHER_GOLD_ORE, Items.GOLD_INGOT, null);
add(Blocks.DIAMOND_ORE, Items.DIAMOND, Blocks.DIAMOND_BLOCK); add(Blocks.DIAMOND_ORE, Items.DIAMOND, Blocks.DIAMOND_BLOCK);
add(Blocks.EMERALD_ORE, Items.EMERALD, Blocks.EMERALD_BLOCK); add(Blocks.EMERALD_ORE, Items.EMERALD, Blocks.EMERALD_BLOCK);
add(EnergonRelics.Blocks.VERIDIUM_ORE, EnergonRelics.Items.VERIDIUM_INGOT, EnergonRelics.Blocks.VERIDIUM_BLOCK); add(EnergonRelics.Blocks.VERIDIUM_ORE, EnergonRelics.Items.VERIDIUM_INGOT, EnergonRelics.Blocks.VERIDIUM_BLOCK);

View File

@ -2,9 +2,11 @@ package com.thebrokenrail.energonrelics.util;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import org.jetbrains.annotations.ApiStatus;
import java.util.function.Consumer; import java.util.function.Consumer;
@ApiStatus.Internal
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public class BooleanIterator { public class BooleanIterator {
public static void run(Consumer<Boolean> function) { public static void run(Consumer<Boolean> function) {

View File

@ -1,7 +1,7 @@
{ {
"parent": "minecraft:block/block", "parent": "minecraft:block/block",
"textures": { "textures": {
"0": "energonrelics:block/gold_block", "0": "minecraft:block/gold_block",
"1": "energonrelics:block/lightning_rod_base", "1": "energonrelics:block/lightning_rod_base",
"particle": "#1" "particle": "#1"
}, },

View File

@ -2,7 +2,7 @@
"credit": "Made by Azazelthedemonlord", "credit": "Made by Azazelthedemonlord",
"textures": { "textures": {
"0": "energonrelics:block/lightning_rod", "0": "energonrelics:block/lightning_rod",
"particle": "energonrelics:block/gold_block" "particle": "minecraft:block/gold_block"
}, },
"elements": [ "elements": [
{ {

View File

@ -3,7 +3,7 @@
"textures": { "textures": {
"0": "energonrelics:block/lightning_rod", "0": "energonrelics:block/lightning_rod",
"1": "energonrelics:block/lightning_rod_base", "1": "energonrelics:block/lightning_rod_base",
"particle": "energonrelics:block/gold_block" "particle": "minecraft:block/gold_block"
}, },
"elements": [ "elements": [
{ {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

View File

@ -65,5 +65,21 @@
"block.energonrelics.phase_shifter": "Phase Shifter", "block.energonrelics.phase_shifter": "Phase Shifter",
"text.energonrelics.phase_shifter_extra": "Phased Items: %s", "text.energonrelics.phase_shifter_extra": "Phased Items: %s",
"category.rei.energonrelics.information.structure_generation.title": "Structures", "category.rei.energonrelics.information.structure_generation.title": "Structures",
"category.rei.energonrelics.information.structure_generation.research_complex": "Found In The Research Complex Underground Structure" "category.rei.energonrelics.information.structure_generation.research_complex": "Found In The Research Complex Underground Structure",
"advancements.energonrelics.root.title": "EnergonRelics",
"advancements.energonrelics.root.description": "A Simple Technology Mod",
"advancements.energonrelics.find_circuit_board.title": "Mysterious Machines",
"advancements.energonrelics.find_circuit_board.description": "Find a Circuit Board",
"advancements.energonrelics.craft_solar_panel.title": "Power of The Sun",
"advancements.energonrelics.craft_solar_panel.description": "Craft a Solar Panel",
"advancements.energonrelics.craft_network_chip.title": "Invisible Wires",
"advancements.energonrelics.craft_network_chip.description": "Craft a Network Chip",
"advancements.energonrelics.smelt_veridium_ore.title": "Hidden Power",
"advancements.energonrelics.smelt_veridium_ore.description": "Smelt Veridium Ore",
"advancements.energonrelics.craft_switch.title": "Logical Constellations",
"advancements.energonrelics.craft_switch.description": "Craft a Switch",
"advancements.energonrelics.craft_multimeter.title": "Measuring Madness",
"advancements.energonrelics.craft_multimeter.description": "Craft a Multimeter",
"advancements.energonrelics.craft_reactor_core.title": "Artificial Star",
"advancements.energonrelics.craft_reactor_core.description": "Craft a Reactor Core"
} }

View File

@ -1,55 +1,55 @@
{ {
"item.energonrelics.network_chip": "Сетевой чип", "item.energonrelics.network_chip": "Сетевой чип",
"block.energonrelics.energon_light": "Энергон Свет", "block.energonrelics.energon_light": "Энергоновая лампа",
"block.energonrelics.solar_panel": "Сонячна панель", "block.energonrelics.solar_panel": "Солнечная панель",
"block.energonrelics.switch": "Переключатель", "block.energonrelics.switch": "Переключатель",
"item.energonrelics.multimeter": "Мультиметр", "item.energonrelics.multimeter": "Мультиметр",
"text.energonrelics.energy_required": "Требуемая энергия: %s Енергон", "text.energonrelics.energy_required": "Требуемая энергия: %s Энергон",
"text.energonrelics.energy_available": "Доступная энергия: %s Енергон", "text.energonrelics.energy_available": "Доступная энергия: %s Энергон",
"block.energonrelics.thermal_casing": "Тепловой кожух", "block.energonrelics.thermal_casing": "Термальнй кожух",
"block.energonrelics.thermal_glass": "Термальное стекло", "block.energonrelics.thermal_glass": "Термостекло",
"block.energonrelics.battery_core": "Батерейне ядро", "block.energonrelics.battery_core": "Ядро батареи",
"block.energonrelics.passive_battery_controller": "Пассивный контроллер батареи", "block.energonrelics.passive_battery_controller": "Пассивный контроллер батареи",
"block.energonrelics.active_battery_controller": "Активный контроллер батареи", "block.energonrelics.active_battery_controller": "Активный контроллер батареи",
"item.energonrelics.circuit_board": "Монтажная плата", "item.energonrelics.circuit_board": "Печатная плата",
"block.energonrelics.reactor_controller": "Реактор контролер", "block.energonrelics.reactor_controller": "Контроллер реактора",
"block.energonrelics.reactor_input": "Вход реактора", "block.energonrelics.reactor_input": "Порт реактора",
"block.energonrelics.reactor_core": "Ядро реактора", "block.energonrelics.reactor_core": "Ядро реактора",
"item.energonrelics.veridium_ingot": "Слиток Веридиума", "item.energonrelics.veridium_ingot": "Веридиумный слиток",
"block.energonrelics.veridium_ore": "Веридиумна руда", "block.energonrelics.veridium_ore": "Веридиумная руда",
"block.energonrelics.veridium_block": "Веридиумный блок", "block.energonrelics.veridium_block": "Веридиумный блок",
"item.energonrelics.defensive_laser_core": "Защитное лазерное ядро", "item.energonrelics.defensive_laser_core": "Защитное лазерное ядро",
"block.energonrelics.defensive_laser": "Защитный лазер", "block.energonrelics.defensive_laser": "Защитный лазер",
"text.autoconfig.energonrelics.option.textureSet": "Набор текстур", "text.autoconfig.energonrelics.option.textureSet": "Набор текстур",
"death.attack.energonrelics.defensive_laser": "%s был испарен защитным лазером", "death.attack.energonrelics.defensive_laser": "%s был испарен защитным лазером",
"death.attack.energonrelics.defensive_laser.player": "%s был испарен защитным лазером во время боя %s", "death.attack.energonrelics.defensive_laser.player": "%s был испарен защитным лазером во время боя с %s",
"block.energonrelics.research_complex_generator": "Генератор исследовательского комплекс", "block.energonrelics.research_complex_generator": "Генератор исследовательского комплекса",
"block.energonrelics.block_breaker": "Блок отмени", "block.energonrelics.block_breaker": "Ломатель блоков",
"item.energonrelics.veridium_powder": "Веридиум порошок", "item.energonrelics.veridium_powder": "Веридиумный порошок",
"effect.energonrelics.veridium_poison": "Веридиумная зелья", "effect.energonrelics.veridium_poison": "Веридиумный яд",
"item.minecraft.potion.effect.energonrelics.veridium_poison": "Зелья деградации", "item.minecraft.potion.effect.energonrelics.veridium_poison": "Зелье деградации",
"item.minecraft.splash_potion.effect.energonrelics.veridium_poison": "Взривное зелья деградации", "item.minecraft.splash_potion.effect.energonrelics.veridium_poison": "Взрывное зелье деградации",
"item.minecraft.lingering_potion.effect.energonrelics.veridium_poison": "Туманое зелья деградации", "item.minecraft.lingering_potion.effect.energonrelics.veridium_poison": "Туманное зелье деградации",
"item.minecraft.tipped_arrow.effect.energonrelics.veridium_poison": "Стрела деградации", "item.minecraft.tipped_arrow.effect.energonrelics.veridium_poison": "Стрела деградации",
"block.energonrelics.lightning_rod_base": "Молниеотвод", "block.energonrelics.lightning_rod_base": "Молниеотвод",
"block.energonrelics.forcefield": "Силовое поле", "block.energonrelics.forcefield": "Силовое поле",
"block.energonrelics.forcefield_projector": "Проектор силового поля", "block.energonrelics.forcefield_projector": "Проектор силового поля",
"block.energonrelics.creative_energy_source": "Источник творческой энергии", "block.energonrelics.creative_energy_source": "Креативный источник энергии",
"block.energonrelics.holographic_sky": "Голографическое небо", "block.energonrelics.holographic_sky": "Голографическое небо",
"block.energonrelics.tractor_beam_projector": "Проектор тракторного луча", "block.energonrelics.tractor_beam_projector": "Проектор тягового луча",
"block.energonrelics.tractor_beam": "Луч трактора", "block.energonrelics.tractor_beam": "Тяговый луч",
"block.energonrelics.repulsor_beam": "Репульсорный луч", "block.energonrelics.repulsor_beam": "Репульсорный луч",
"block.energonrelics.industrial_laser_projector": "Промышленный лазерный проектор", "block.energonrelics.industrial_laser_projector": "Промышленный лазерный проектор",
"block.energonrelics.industrial_laser": "Промышленный лазер", "block.energonrelics.industrial_laser": "Промышленный лазер",
"death.attack.energonrelics.industrial_laser": "%s был расплавлен промышленным лазером", "death.attack.energonrelics.industrial_laser": "%s был расплавлен промышленным лазером",
"death.attack.energonrelics.industrial_laser.player": "%s был расплавлен промышленным лазером во время боя %s", "death.attack.energonrelics.industrial_laser.player": "%s был расплавлен промышленным лазером во время боя с %s",
"block.energonrelics.infuser": "Инфузиор", "block.energonrelics.infuser": "Насыщатель",
"text.energonrelics.infuser_progress": "Инфузионный прогресс: %s%%", "text.energonrelics.infuser_progress": "Прогресс насыщения: %s%%",
"text.energonrelics.battery_core_tooltip": "%s Еергон", "text.energonrelics.battery_core_tooltip": "%s Энергон",
"category.rei.energonrelics.infusing.chance": "%s%% Шанс", "category.rei.energonrelics.infusing.chance": "%s%% Шанс",
"category.rei.energonrelics.infusing.cost": "%s Енергон", "category.rei.energonrelics.infusing.cost": "%s Энергон",
"category.rei.energonrelics.infusing.name": "Инфузиор", "category.rei.energonrelics.infusing.name": "Насыщатель",
"item.energonrelics.veridium_orb": "Сфера Веридиума", "item.energonrelics.veridium_orb": "Веридиумная сфера",
"block.energonrelics.energy_projector": "Энергетический проектор", "block.energonrelics.energy_projector": "Энергетический проектор",
"block.energonrelics.energy_beam": "Энергетический луч", "block.energonrelics.energy_beam": "Энергетический луч",
"block.energonrelics.energy_portal": "Энергетический портал", "block.energonrelics.energy_portal": "Энергетический портал",
@ -59,7 +59,7 @@
"category.rei.energonrelics.reactor_fuel.name": "Реакторное топливо", "category.rei.energonrelics.reactor_fuel.name": "Реакторное топливо",
"category.rei.energonrelics.reactor_fuel.multiplier": "%sx Реакция", "category.rei.energonrelics.reactor_fuel.multiplier": "%sx Реакция",
"block.energonrelics.phase_shifter": "Фазовращатель", "block.energonrelics.phase_shifter": "Фазовращатель",
"text.energonrelics.phase_shifter_extra": "Поэтапные предметы: %s", "text.energonrelics.phase_shifter_extra": "Фазированные предметы: %s",
"category.rei.energonrelics.information.structure_generation.title": "Структуры", "category.rei.energonrelics.information.structure_generation.title": "Структуры",
"category.rei.energonrelics.information.structure_generation.research_complex": "Найдено в подземном сооружении исследовательского комплекса" "category.rei.energonrelics.information.structure_generation.research_complex": "Найдено в подземной структуре исследовательского комплекса"
} }

View File

@ -1,7 +1,7 @@
{ {
"parent": "minecraft:block/block", "parent": "minecraft:block/block",
"textures": { "textures": {
"1": "energonrelics:block/lightning_rod_base", "1": "minecraft:block/blackstone",
"particle": "#1" "particle": "#1"
}, },
"elements": [ "elements": [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,26 @@
{
"display": {
"icon": {
"item": "energonrelics:multimeter"
},
"title": {
"translate": "advancements.energonrelics.craft_multimeter.title"
},
"description": {
"translate": "advancements.energonrelics.craft_multimeter.description"
}
},
"parent": "energonrelics:craft_network_chip",
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:multimeter"
}
]
}
}
}
}

View File

@ -0,0 +1,26 @@
{
"display": {
"icon": {
"item": "energonrelics:network_chip"
},
"title": {
"translate": "advancements.energonrelics.craft_network_chip.title"
},
"description": {
"translate": "advancements.energonrelics.craft_network_chip.description"
}
},
"parent": "energonrelics:find_circuit_board",
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:network_chip"
}
]
}
}
}
}

View File

@ -0,0 +1,30 @@
{
"display": {
"icon": {
"item": "energonrelics:reactor_core"
},
"title": {
"translate": "advancements.energonrelics.craft_reactor_core.title"
},
"description": {
"translate": "advancements.energonrelics.craft_reactor_core.description"
},
"frame": "goal"
},
"parent": "energonrelics:smelt_veridium_ore",
"rewards": {
"experience": 100
},
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:reactor_core"
}
]
}
}
}
}

View File

@ -0,0 +1,26 @@
{
"display": {
"icon": {
"item": "energonrelics:solar_panel"
},
"title": {
"translate": "advancements.energonrelics.craft_solar_panel.title"
},
"description": {
"translate": "advancements.energonrelics.craft_solar_panel.description"
}
},
"parent": "energonrelics:find_circuit_board",
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:solar_panel"
}
]
}
}
}
}

View File

@ -0,0 +1,26 @@
{
"display": {
"icon": {
"item": "energonrelics:switch"
},
"title": {
"translate": "advancements.energonrelics.craft_switch.title"
},
"description": {
"translate": "advancements.energonrelics.craft_switch.description"
}
},
"parent": "energonrelics:craft_network_chip",
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:switch"
}
]
}
}
}
}

View File

@ -0,0 +1,57 @@
{
"display": {
"icon": {
"item": "energonrelics:circuit_board"
},
"title": {
"translate": "advancements.energonrelics.find_circuit_board.title"
},
"description": {
"translate": "advancements.energonrelics.find_circuit_board.description"
},
"frame": "challenge"
},
"parent": "energonrelics:root",
"rewards": {
"experience": 100,
"recipes": [
"energonrelics:active_battery_controller",
"energonrelics:battery_core",
"energonrelics:block_breaker",
"energonrelics:defensive_laser_core",
"energonrelics:defensive_laser",
"energonrelics:duplicate_network_chip",
"energonrelics:energon_light",
"energonrelics:energy_projector",
"energonrelics:forcefield_projector",
"energonrelics:holographic_sky",
"energonrelics:industrial_laser_projector",
"energonrelics:infuser",
"energonrelics:lightning_rod_base",
"energonrelics:multimeter",
"energonrelics:network_chip",
"energonrelics:passive_battery_controller",
"energonrelics:phase_shifter",
"energonrelics:reactor_controller",
"energonrelics:reactor_core",
"energonrelics:reactor_input",
"energonrelics:solar_panel",
"energonrelics:switch",
"energonrelics:thermal_casing",
"energonrelics:thermal_glass",
"energonrelics:tractor_beam_projector"
]
},
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:circuit_board"
}
]
}
}
}
}

View File

@ -0,0 +1,30 @@
{
"display": {
"icon": {
"item": "energonrelics:network_chip"
},
"title": {
"translate": "advancements.energonrelics.root.title"
},
"description": {
"translate": "advancements.energonrelics.root.description"
},
"background": "minecraft:textures/block/blackstone.png",
"show_toast": false,
"announce_to_chat": false
},
"rewards": {
"recipes": [
"energonrelics:veridium_block",
"energonrelics:veridium_ingot_from_blasting",
"energonrelics:veridium_ingot_from_veridium_block",
"energonrelics:veridium_ingot",
"energonrelics:veridium_powder"
]
},
"criteria": {
"tick": {
"trigger": "minecraft:tick"
}
}
}

View File

@ -0,0 +1,26 @@
{
"display": {
"icon": {
"item": "energonrelics:veridium_ingot"
},
"title": {
"translate": "advancements.energonrelics.smelt_veridium_ore.title"
},
"description": {
"translate": "advancements.energonrelics.smelt_veridium_ore.description"
}
},
"parent": "energonrelics:find_circuit_board",
"criteria": {
"chest_boat": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"item": "energonrelics:veridium_ingot"
}
]
}
}
}
}

View File

@ -1,13 +1,18 @@
{ {
"type": "minecraft:crafting_shapeless", "type": "minecraft:crafting_shaped",
"ingredients": [ "pattern": [
{ " I ",
"item": "minecraft:iron_ingot" "I#I",
" I "
],
"key": {
"I": {
"item": "minecraft:iron_nugget"
}, },
{ "#": {
"item": "energonrelics:circuit_board" "item": "energonrelics:circuit_board"
} }
], },
"result": { "result": {
"item": "energonrelics:network_chip", "item": "energonrelics:network_chip",
"count": 1 "count": 1

View File

@ -10,7 +10,7 @@
"item": "energonrelics:circuit_board" "item": "energonrelics:circuit_board"
}, },
"I": { "I": {
"item": "minecraft:iron_ingot" "item": "minecraft:iron_nugget"
}, },
"L": { "L": {
"item": "minecraft:lever" "item": "minecraft:lever"
@ -18,6 +18,6 @@
}, },
"result": { "result": {
"item": "energonrelics:switch", "item": "energonrelics:switch",
"count": 2 "count": 4
} }
} }

View File

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"energonrelics:veridium_block"
]
}