Compare commits
15 Commits
0.1.9+1.16
...
master
Author | SHA1 | Date |
---|---|---|
TheBrokenRail | 9dde7b4288 | |
TheBrokenRail | 40de5445d1 | |
TheBrokenRail | 643e287e23 | |
TheBrokenRail | e5135deef1 | |
TheBrokenRail | 7cb97d4bb6 | |
TheBrokenRail | a754b43b7c | |
Yoghurt4C | 89b42442fd | |
Yoghurt4C | ac1c09cc5f | |
TheBrokenRail | 8e1712e64c | |
TheBrokenRail | 3f59e506a4 | |
TheBrokenRail | 6382869176 | |
TheBrokenRail | 8941461874 | |
TheBrokenRail | 973f92cc35 | |
TheBrokenRail | e8940acb39 | |
TheBrokenRail | c095f7da28 |
27
CHANGELOG.md
|
@ -1,5 +1,32 @@
|
|||
# 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**
|
||||
* Fix Solar Panel Crash
|
||||
|
||||
**Beta 0.2.0**
|
||||
* Add New Textures
|
||||
* Add Russian Translations
|
||||
|
||||
**Beta 0.1.9**
|
||||
* Fix Profiling
|
||||
|
||||
|
|
|
@ -17,4 +17,5 @@ Using RoughlyEnoughItems with this mod is highly recommended.
|
|||
## Credits
|
||||
- ``@PoeticRainbow#5928`` on Discord For The Logo And Poster
|
||||
- ``@PoeticRainbow#5928`` on Discord For Their Texture Set
|
||||
- ``@azazelthedemonlord#2563`` on Discord For Their Texture Set
|
||||
- ``@azazelthedemonlord#2563`` on Discord For Their Texture Set
|
||||
- ``kazmurenko`` on CurseForge For Translating To Russian
|
|
@ -45,9 +45,6 @@ dependencies {
|
|||
modImplementation "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}"
|
||||
}
|
||||
|
||||
|
|
|
@ -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/)
|
|
@ -6,4 +6,6 @@
|
|||
|
||||
[View Blocks](BLOCKS.md)
|
||||
|
||||
[View Structures](STRUCTURES.md)
|
||||
[View Structures](STRUCTURES.md)
|
||||
|
||||
[View API](API.md)
|
|
@ -6,19 +6,18 @@ org.gradle.jvmargs = -Xmx1G
|
|||
minecraft_version = 1.16.2
|
||||
curseforge_id = 398250
|
||||
simple_minecraft_version = 1.16.2
|
||||
yarn_build = 6
|
||||
fabric_loader_version = 0.9.0+build.204
|
||||
yarn_build = 21
|
||||
fabric_loader_version = 0.9.2+build.206
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 0.1.9
|
||||
mod_version = 1.0.4
|
||||
maven_group = com.thebrokenrail
|
||||
|
||||
# Dependencies
|
||||
# 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
|
||||
cloth_config_version = 4.7.0-unstable
|
||||
autoconfig_version = 3.2.0-unstable
|
||||
libstructure_version = 1.5
|
||||
roughlyenoughitems_version = 5.2.3
|
||||
jetbrains_annotations_version = 19.0.0
|
||||
|
|
|
@ -14,8 +14,7 @@ import java.util.Objects;
|
|||
/**
|
||||
* Energy Ticker
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
public class EnergyTicker {
|
||||
public final class EnergyTicker {
|
||||
private static final List<EnergyTickable> scheduled = new ArrayList<>();
|
||||
private static List<EnergyTickable> allLoaded = Collections.emptyList();
|
||||
|
||||
|
@ -33,6 +32,7 @@ public class EnergyTicker {
|
|||
* Schedule For Next Energy Tick
|
||||
* @param tickable Object To Tick
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
public static void schedule(EnergyTickable tickable) {
|
||||
scheduled.add(tickable);
|
||||
}
|
||||
|
@ -41,12 +41,15 @@ public class EnergyTicker {
|
|||
* Tick Energy
|
||||
* @param world World
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
public static void tick(World world) {
|
||||
if (Objects.requireNonNull(world.getServer()).getThread() == Thread.currentThread()) {
|
||||
world.getProfiler().push(EnergonRelics.NAMESPACE);
|
||||
|
||||
NetworkComponent.getInstance((ServerWorld) world).clearCache();
|
||||
|
||||
world.getProfiler().push("startTick");
|
||||
|
||||
List<EnergyTickable> started = new ArrayList<>();
|
||||
|
||||
List<EnergyTickable> temp = new ArrayList<>(scheduled);
|
||||
|
@ -54,7 +57,7 @@ public class EnergyTicker {
|
|||
while (!temp.isEmpty()) {
|
||||
for (EnergyTickable tickable : temp) {
|
||||
if (!started.contains(tickable)) {
|
||||
world.getProfiler().push(() -> tickable.getID() + " startTick");
|
||||
world.getProfiler().push(tickable::getID);
|
||||
|
||||
temp2.addAll(tickable.startTick());
|
||||
started.add(tickable);
|
||||
|
@ -62,8 +65,10 @@ public class EnergyTicker {
|
|||
world.getProfiler().pop();
|
||||
}
|
||||
}
|
||||
temp.clear();
|
||||
temp.addAll(temp2);
|
||||
|
||||
List<EnergyTickable> temp3 = temp;
|
||||
temp = temp2;
|
||||
temp2 = temp3;
|
||||
temp2.clear();
|
||||
}
|
||||
|
||||
|
@ -73,8 +78,12 @@ public class EnergyTicker {
|
|||
Collections.shuffle(started, world.random);
|
||||
world.getProfiler().pop();
|
||||
|
||||
world.getProfiler().pop();
|
||||
|
||||
world.getProfiler().push("logicTick");
|
||||
|
||||
for (EnergyTickable tickable : started) {
|
||||
world.getProfiler().push(() -> tickable.getID() + " logicTick");
|
||||
world.getProfiler().push(tickable::getID);
|
||||
|
||||
tickable.logicTick();
|
||||
|
||||
|
@ -82,6 +91,8 @@ public class EnergyTicker {
|
|||
}
|
||||
|
||||
world.getProfiler().pop();
|
||||
|
||||
world.getProfiler().pop();
|
||||
}
|
||||
scheduled.clear();
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.thebrokenrail.energonrelics.api.item;
|
|||
import net.minecraft.text.MutableText;
|
||||
|
||||
/**
|
||||
* Implement To Provide Extra Information In Multimeter
|
||||
* Implement To Provide Extra Information In Multimeter Output
|
||||
*/
|
||||
public interface MultimeterExtra {
|
||||
/**
|
||||
|
|
|
@ -106,15 +106,17 @@ public class PhaseShifterBlock extends EnergyBlock {
|
|||
UseBlockCallback.EVENT.register((player, world, hand, hit) -> {
|
||||
if (!player.isSpectator() && player.shouldCancelInteraction()) {
|
||||
BlockState state = world.getBlockState(hit.getBlockPos());
|
||||
ItemStack stack = player.getStackInHand(hand);
|
||||
if (stack.getItem() instanceof DyeItem) {
|
||||
DyeColor newColor = ((DyeItem) stack.getItem()).getColor();
|
||||
if (state.get(PhaseShifterBlock.COLOR) != newColor) {
|
||||
world.setBlockState(hit.getBlockPos(), state.with(PhaseShifterBlock.COLOR, newColor));
|
||||
if (!player.isCreative()) {
|
||||
stack.decrement(1);
|
||||
if (state.getBlock() == PhaseShifterBlock.this) {
|
||||
ItemStack stack = player.getStackInHand(hand);
|
||||
if (stack.getItem() instanceof DyeItem) {
|
||||
DyeColor newColor = ((DyeItem) stack.getItem()).getColor();
|
||||
if (state.get(PhaseShifterBlock.COLOR) != newColor) {
|
||||
world.setBlockState(hit.getBlockPos(), state.with(PhaseShifterBlock.COLOR, newColor));
|
||||
if (!player.isCreative()) {
|
||||
stack.decrement(1);
|
||||
}
|
||||
return ActionResult.SUCCESS;
|
||||
}
|
||||
return ActionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ public class SolarPanelBlockEntity extends EnergyGeneratorBlockEntity {
|
|||
for (Direction side : Direction.values()) {
|
||||
light = Math.max(light, getLight(side));
|
||||
}
|
||||
return (int) (((float) light) * MathHelper.cos(Objects.requireNonNull(getWorld()).getSkyAngleRadians(1f)));
|
||||
return (int) (((float) light) * Math.max(0, MathHelper.cos(Objects.requireNonNull(getWorld()).getSkyAngleRadians(1f))));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -21,13 +21,13 @@ import net.minecraft.world.explosion.Explosion;
|
|||
|
||||
import java.util.Objects;
|
||||
|
||||
public class IndustrialLaserBlockEntity extends FieldProjectorBlockEntity {
|
||||
public class IndustrialLaserProjectorBlockEntity extends FieldProjectorBlockEntity {
|
||||
private BlockPos targetPos;
|
||||
private BlockState targetState;
|
||||
|
||||
private int progress = 0;
|
||||
|
||||
public IndustrialLaserBlockEntity(BlockEntityType<?> type) {
|
||||
public IndustrialLaserProjectorBlockEntity(BlockEntityType<?> type) {
|
||||
super(type, state -> EnergonRelics.Blocks.INDUSTRIAL_LASER);
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
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 net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
|
@ -14,6 +14,6 @@ public class IndustrialLaserProjectorBlock extends FieldProjectorBlock {
|
|||
|
||||
@Override
|
||||
protected Function<BlockEntityType<BlockEntity>, BlockEntity> getFactory() {
|
||||
return IndustrialLaserBlockEntity::new;
|
||||
return IndustrialLaserProjectorBlockEntity::new;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ import com.thebrokenrail.energonrelics.block.entity.structure.StructureGenerator
|
|||
import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity;
|
||||
import com.thebrokenrail.energonrelics.structure.researchcomplex.ResearchComplexStartPart;
|
||||
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.structure.v1.FabricStructureBuilder;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
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.Direction;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.world.StructureWorldAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.biome.Biome;
|
||||
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) {
|
||||
super.onBlockAdded(state, world, pos, oldState, notify);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -119,7 +120,7 @@ public class StructureGeneratorBlock extends SimpleBlockWithEntity {
|
|||
blocks.put(name, block);
|
||||
|
||||
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() {
|
||||
|
|
|
@ -19,17 +19,23 @@ class StructureGeneratorPiece extends StructurePiece {
|
|||
private final StructureGeneratorBlock block;
|
||||
private final BlockRotation rotation;
|
||||
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);
|
||||
this.block = block;
|
||||
this.rotation = rotation;
|
||||
this.pos = pos;
|
||||
this.placed = placed;
|
||||
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) {
|
||||
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
|
||||
|
@ -38,19 +44,24 @@ class StructureGeneratorPiece extends StructurePiece {
|
|||
tag.putInt("X", pos.getX());
|
||||
tag.putInt("Y", pos.getY());
|
||||
tag.putInt("Z", pos.getZ());
|
||||
tag.putBoolean("Placed", placed);
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
BlockEntity entity = world.getBlockEntity(pos);
|
||||
if (entity instanceof StructureGeneratorBlockEntity) {
|
||||
((StructureGeneratorBlockEntity) entity).setSeed(random.nextLong());
|
||||
world.setBlockState(pos, state, 3);
|
||||
BlockEntity entity = world.getBlockEntity(pos);
|
||||
if (entity instanceof StructureGeneratorBlockEntity) {
|
||||
((StructureGeneratorBlockEntity) entity).setSeed(random.nextLong());
|
||||
}
|
||||
|
||||
block.schedule(world, pos);
|
||||
|
||||
placed = true;
|
||||
}
|
||||
|
||||
block.schedule(world.toServerWorld(), pos);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
consumer.vertex(model, x, y, z).color(1f, 1f, 1f, 1f).next();
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.thebrokenrail.energonrelics.block.forcefield.util.BeamBlock;
|
|||
import com.thebrokenrail.energonrelics.block.portal.PortalCooldownEntity;
|
||||
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
|
@ -26,6 +27,8 @@ import java.util.function.Predicate;
|
|||
public abstract class MixinEntity implements PortalCooldownEntity {
|
||||
@Unique
|
||||
private int energyPortalCooldown = 0;
|
||||
@Unique
|
||||
private boolean touchingBeam = false;
|
||||
|
||||
@Shadow
|
||||
public abstract Box getBoundingBox();
|
||||
|
@ -53,7 +56,8 @@ public abstract class MixinEntity implements PortalCooldownEntity {
|
|||
for (int q = k; q < l; ++q) {
|
||||
for (int r = m; r < n; ++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();
|
||||
return true;
|
||||
}
|
||||
|
@ -71,7 +75,7 @@ public abstract class MixinEntity implements PortalCooldownEntity {
|
|||
|
||||
@Inject(at = @At("HEAD"), method = "hasNoGravity", cancellable = true)
|
||||
public void hasNoGravity(CallbackInfoReturnable<Boolean> info) {
|
||||
if (!saving && isTouching(block -> block instanceof BeamBlock)) {
|
||||
if (!saving && touchingBeam) {
|
||||
info.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
|
@ -92,8 +96,13 @@ public abstract class MixinEntity implements PortalCooldownEntity {
|
|||
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")
|
||||
public void tick(CallbackInfo info) {
|
||||
public void tickReturn(CallbackInfo info) {
|
||||
energyPortalCooldown--;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,9 @@ public class IndustrialLaserRegistry {
|
|||
|
||||
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.IRON_ORE, Items.IRON_INGOT, Blocks.IRON_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.EMERALD_ORE, Items.EMERALD, Blocks.EMERALD_BLOCK);
|
||||
add(EnergonRelics.Blocks.VERIDIUM_ORE, EnergonRelics.Items.VERIDIUM_INGOT, EnergonRelics.Blocks.VERIDIUM_BLOCK);
|
||||
|
|
|
@ -2,9 +2,11 @@ package com.thebrokenrail.energonrelics.util;
|
|||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class BooleanIterator {
|
||||
public static void run(Consumer<Boolean> function) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/block",
|
||||
"textures": {
|
||||
"0": "energonrelics:block/gold_block",
|
||||
"0": "minecraft:block/gold_block",
|
||||
"1": "energonrelics:block/lightning_rod_base",
|
||||
"particle": "#1"
|
||||
},
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"credit": "Made by Azazelthedemonlord",
|
||||
"textures": {
|
||||
"0": "energonrelics:block/lightning_rod",
|
||||
"particle": "energonrelics:block/gold_block"
|
||||
"particle": "minecraft:block/gold_block"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"textures": {
|
||||
"0": "energonrelics:block/lightning_rod",
|
||||
"1": "energonrelics:block/lightning_rod_base",
|
||||
"particle": "energonrelics:block/gold_block"
|
||||
"particle": "minecraft:block/gold_block"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
|
|
Before Width: | Height: | Size: 416 B |
After Width: | Height: | Size: 502 B |
After Width: | Height: | Size: 497 B |
After Width: | Height: | Size: 508 B |
After Width: | Height: | Size: 509 B |
After Width: | Height: | Size: 372 B |
After Width: | Height: | Size: 403 B |
After Width: | Height: | Size: 363 B |
After Width: | Height: | Size: 708 B |
After Width: | Height: | Size: 23 KiB |
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"animation": {}
|
||||
}
|
After Width: | Height: | Size: 728 B |
After Width: | Height: | Size: 793 B |
After Width: | Height: | Size: 618 B |
After Width: | Height: | Size: 858 B |
After Width: | Height: | Size: 912 B |
After Width: | Height: | Size: 863 B |
After Width: | Height: | Size: 804 B |
After Width: | Height: | Size: 779 B |
After Width: | Height: | Size: 1009 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 933 B |
After Width: | Height: | Size: 940 B |
After Width: | Height: | Size: 944 B |
After Width: | Height: | Size: 936 B |
After Width: | Height: | Size: 594 B |
After Width: | Height: | Size: 735 B |
After Width: | Height: | Size: 782 B |
After Width: | Height: | Size: 735 B |
After Width: | Height: | Size: 789 B |
|
@ -65,5 +65,21 @@
|
|||
"block.energonrelics.phase_shifter": "Phase Shifter",
|
||||
"text.energonrelics.phase_shifter_extra": "Phased Items: %s",
|
||||
"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"
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"item.energonrelics.network_chip": "Сетевой чип",
|
||||
"block.energonrelics.energon_light": "Энергоновая лампа",
|
||||
"block.energonrelics.solar_panel": "Солнечная панель",
|
||||
"block.energonrelics.switch": "Переключатель",
|
||||
"item.energonrelics.multimeter": "Мультиметр",
|
||||
"text.energonrelics.energy_required": "Требуемая энергия: %s Энергон",
|
||||
"text.energonrelics.energy_available": "Доступная энергия: %s Энергон",
|
||||
"block.energonrelics.thermal_casing": "Термальнй кожух",
|
||||
"block.energonrelics.thermal_glass": "Термостекло",
|
||||
"block.energonrelics.battery_core": "Ядро батареи",
|
||||
"block.energonrelics.passive_battery_controller": "Пассивный контроллер батареи",
|
||||
"block.energonrelics.active_battery_controller": "Активный контроллер батареи",
|
||||
"item.energonrelics.circuit_board": "Печатная плата",
|
||||
"block.energonrelics.reactor_controller": "Контроллер реактора",
|
||||
"block.energonrelics.reactor_input": "Порт реактора",
|
||||
"block.energonrelics.reactor_core": "Ядро реактора",
|
||||
"item.energonrelics.veridium_ingot": "Веридиумный слиток",
|
||||
"block.energonrelics.veridium_ore": "Веридиумная руда",
|
||||
"block.energonrelics.veridium_block": "Веридиумный блок",
|
||||
"item.energonrelics.defensive_laser_core": "Защитное лазерное ядро",
|
||||
"block.energonrelics.defensive_laser": "Защитный лазер",
|
||||
"text.autoconfig.energonrelics.option.textureSet": "Набор текстур",
|
||||
"death.attack.energonrelics.defensive_laser": "%s был испарен защитным лазером",
|
||||
"death.attack.energonrelics.defensive_laser.player": "%s был испарен защитным лазером во время боя с %s",
|
||||
"block.energonrelics.research_complex_generator": "Генератор исследовательского комплекса",
|
||||
"block.energonrelics.block_breaker": "Ломатель блоков",
|
||||
"item.energonrelics.veridium_powder": "Веридиумный порошок",
|
||||
"effect.energonrelics.veridium_poison": "Веридиумный яд",
|
||||
"item.minecraft.potion.effect.energonrelics.veridium_poison": "Зелье деградации",
|
||||
"item.minecraft.splash_potion.effect.energonrelics.veridium_poison": "Взрывное зелье деградации",
|
||||
"item.minecraft.lingering_potion.effect.energonrelics.veridium_poison": "Туманное зелье деградации",
|
||||
"item.minecraft.tipped_arrow.effect.energonrelics.veridium_poison": "Стрела деградации",
|
||||
"block.energonrelics.lightning_rod_base": "Молниеотвод",
|
||||
"block.energonrelics.forcefield": "Силовое поле",
|
||||
"block.energonrelics.forcefield_projector": "Проектор силового поля",
|
||||
"block.energonrelics.creative_energy_source": "Креативный источник энергии",
|
||||
"block.energonrelics.holographic_sky": "Голографическое небо",
|
||||
"block.energonrelics.tractor_beam_projector": "Проектор тягового луча",
|
||||
"block.energonrelics.tractor_beam": "Тяговый луч",
|
||||
"block.energonrelics.repulsor_beam": "Репульсорный луч",
|
||||
"block.energonrelics.industrial_laser_projector": "Промышленный лазерный проектор",
|
||||
"block.energonrelics.industrial_laser": "Промышленный лазер",
|
||||
"death.attack.energonrelics.industrial_laser": "%s был расплавлен промышленным лазером",
|
||||
"death.attack.energonrelics.industrial_laser.player": "%s был расплавлен промышленным лазером во время боя с %s",
|
||||
"block.energonrelics.infuser": "Насыщатель",
|
||||
"text.energonrelics.infuser_progress": "Прогресс насыщения: %s%%",
|
||||
"text.energonrelics.battery_core_tooltip": "%s Энергон",
|
||||
"category.rei.energonrelics.infusing.chance": "%s%% Шанс",
|
||||
"category.rei.energonrelics.infusing.cost": "%s Энергон",
|
||||
"category.rei.energonrelics.infusing.name": "Насыщатель",
|
||||
"item.energonrelics.veridium_orb": "Веридиумная сфера",
|
||||
"block.energonrelics.energy_projector": "Энергетический проектор",
|
||||
"block.energonrelics.energy_beam": "Энергетический луч",
|
||||
"block.energonrelics.energy_portal": "Энергетический портал",
|
||||
"block.energonrelics.energized_obsidian": "Заряженный обсидиан",
|
||||
"category.rei.energonrelics.infusing.display_item.minecraft.tnt": "Взрыв",
|
||||
"category.rei.energonrelics.infusing.display_item.minecraft.fire_charge": "Ничего",
|
||||
"category.rei.energonrelics.reactor_fuel.name": "Реакторное топливо",
|
||||
"category.rei.energonrelics.reactor_fuel.multiplier": "%sx Реакция",
|
||||
"block.energonrelics.phase_shifter": "Фазовращатель",
|
||||
"text.energonrelics.phase_shifter_extra": "Фазированные предметы: %s",
|
||||
"category.rei.energonrelics.information.structure_generation.title": "Структуры",
|
||||
"category.rei.energonrelics.information.structure_generation.research_complex": "Найдено в подземной структуре исследовательского комплекса"
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:block/block",
|
||||
"textures": {
|
||||
"1": "energonrelics:block/lightning_rod_base",
|
||||
"1": "minecraft:block/blackstone",
|
||||
"particle": "#1"
|
||||
},
|
||||
"elements": [
|
||||
|
|
Before Width: | Height: | Size: 282 B |
Before Width: | Height: | Size: 575 B After Width: | Height: | Size: 2.5 KiB |
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,13 +1,18 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"ingredients": [
|
||||
{
|
||||
"item": "minecraft:iron_ingot"
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
" I ",
|
||||
"I#I",
|
||||
" I "
|
||||
],
|
||||
"key": {
|
||||
"I": {
|
||||
"item": "minecraft:iron_nugget"
|
||||
},
|
||||
{
|
||||
"#": {
|
||||
"item": "energonrelics:circuit_board"
|
||||
}
|
||||
],
|
||||
},
|
||||
"result": {
|
||||
"item": "energonrelics:network_chip",
|
||||
"count": 1
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"item": "energonrelics:circuit_board"
|
||||
},
|
||||
"I": {
|
||||
"item": "minecraft:iron_ingot"
|
||||
"item": "minecraft:iron_nugget"
|
||||
},
|
||||
"L": {
|
||||
"item": "minecraft:lever"
|
||||
|
@ -18,6 +18,6 @@
|
|||
},
|
||||
"result": {
|
||||
"item": "energonrelics:switch",
|
||||
"count": 2
|
||||
"count": 4
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"energonrelics:veridium_block"
|
||||
]
|
||||
}
|