Add JavaDoc
All checks were successful
EnergonRelics/pipeline/head This commit looks good

This commit is contained in:
TheBrokenRail 2020-08-04 13:06:11 -04:00
parent 7e0a550811
commit b347a67a10
68 changed files with 473 additions and 186 deletions

11
Jenkinsfile vendored
View File

@ -7,11 +7,20 @@ pipeline {
stages {
stage('Build') {
steps {
sh './gradlew build publish'
sh './gradlew build javadoc publish'
}
post {
success {
archiveArtifacts artifacts: 'build/libs/*', fingerprint: true
publishHTML target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: false,
reportDir: 'build/docs/javadoc',
reportFiles: 'index.html',
reportName: 'JavaDoc'
]
}
}
}

View File

@ -8,7 +8,7 @@ compileJava {
targetCompatibility = JavaVersion.VERSION_1_8
}
version = project.mod_version
version = "${project.mod_version}+${project.minecraft_version}"
group = project.maven_group
loom {
@ -90,3 +90,7 @@ task sourcesJar(type: Jar, dependsOn: classes) {
jar {
from "LICENSE"
}
javadoc {
title "EnergonRelics v${version}"
}

View File

@ -1,5 +1,6 @@
#Tue Aug 04 12:47:39 EDT 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

View File

@ -31,7 +31,7 @@ import com.thebrokenrail.energonrelics.block.battery.BatteryCoreBlock;
import com.thebrokenrail.energonrelics.block.EnergonLightBlock;
import com.thebrokenrail.energonrelics.block.SolarPanelBlock;
import com.thebrokenrail.energonrelics.block.SwitchBlock;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import com.thebrokenrail.energonrelics.item.MultimeterItem;
import com.thebrokenrail.energonrelics.item.NetworkChipItem;
import com.thebrokenrail.energonrelics.potion.CustomPotions;

View File

@ -0,0 +1,87 @@
package com.thebrokenrail.energonrelics.api.block;
import com.thebrokenrail.energonrelics.EnergonRelics;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
import net.minecraft.util.registry.Registry;
/**
* Simple Block
*/
public class SimpleBlock extends Block {
public SimpleBlock(Settings settings) {
super(settings);
}
/**
* Register Block And Block Item
* @param id ID
*/
public void register(Identifier id) {
Registry.register(Registry.BLOCK, id, this);
if (registerItem()) {
Item.Settings settings = new Item.Settings();
if (addToItemGroup() || FabricLoader.getInstance().isDevelopmentEnvironment()) {
settings.group(getItemGroup());
}
if (isEpic()) {
settings.rarity(Rarity.EPIC);
}
settings.maxCount(getMaxCount());
Registry.register(Registry.ITEM, id, new BlockItem(this, settings));
}
}
/**
* Register Block And Block Item
* @param name ID
*/
public final void register(String name) {
register(new Identifier(EnergonRelics.NAMESPACE, name));
}
/**
* Get Item Group To Add Block Item To
* @return Item Group
*/
protected ItemGroup getItemGroup() {
return EnergonRelics.ITEM_GROUP;
}
/**
* Should The Block item be Added To An Item Group In A Non-Development Environment
* @return Should it Be Added
*/
protected boolean addToItemGroup() {
return true;
}
/**
* Should A Block Item Be Registered
* @return Should It Be Registered
*/
protected boolean registerItem() {
return true;
}
/**
* Get Max Stack Count
* @return Max Stack Count
*/
protected int getMaxCount() {
return 64;
}
/**
* Should The Item Rarity be Epic
* @return Should It Be Epic
*/
protected boolean isEpic() {
return false;
}
}

View File

@ -1,6 +1,5 @@
package com.thebrokenrail.energonrelics.block.util;
package com.thebrokenrail.energonrelics.api.block;
import com.thebrokenrail.energonrelics.EnergonRelics;
import net.minecraft.block.BlockEntityProvider;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
@ -10,6 +9,9 @@ import net.minecraft.world.BlockView;
import java.util.function.Function;
/**
* Simple Block With Entity
*/
public abstract class SimpleBlockWithEntity extends SimpleBlock implements BlockEntityProvider {
protected BlockEntityType<BlockEntity> type;
@ -18,11 +20,15 @@ public abstract class SimpleBlockWithEntity extends SimpleBlock implements Block
}
@Override
public void register(String name) {
super.register(name);
type = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(EnergonRelics.NAMESPACE, name), BlockEntityType.Builder.create(() -> getFactory().apply(type), this).build(null));
public void register(Identifier id) {
super.register(id);
type = Registry.register(Registry.BLOCK_ENTITY_TYPE, id, BlockEntityType.Builder.create(() -> getFactory().apply(type), this).build(null));
}
/**
* Factory To Create Block Entity
* @return Block Entity Factory
*/
protected abstract Function<BlockEntityType<BlockEntity>, BlockEntity> getFactory();
@Override

View File

@ -1,9 +1,9 @@
package com.thebrokenrail.energonrelics.block.util.energy;
package com.thebrokenrail.energonrelics.api.block.energy;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.util.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.client.block.entity.render.HighlightBlockEntityRenderer;
import com.thebrokenrail.energonrelics.energy.core.EnergyProviderBlockEntity;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry;
@ -17,6 +17,7 @@ import net.minecraft.loot.context.LootContext;
import net.minecraft.loot.context.LootContextParameters;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.Identifier;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
@ -25,6 +26,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
/**
* Block That Interacts With Energy
*/
public abstract class EnergyBlock extends SimpleBlockWithEntity {
private static final List<EnergyBlock> blocks = new ArrayList<>();
@ -33,8 +37,8 @@ public abstract class EnergyBlock extends SimpleBlockWithEntity {
}
@Override
public void register(String name) {
super.register(name);
public void register(Identifier id) {
super.register(id);
blocks.add(this);
}

View File

@ -1,4 +1,4 @@
package com.thebrokenrail.energonrelics.block.util.energy;
package com.thebrokenrail.energonrelics.api.block.energy;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
@ -10,6 +10,9 @@ import net.minecraft.util.BlockMirror;
import net.minecraft.util.BlockRotation;
import net.minecraft.util.math.Direction;
/**
* Block That Interacts With Energy That Faces A Direction
*/
@SuppressWarnings("deprecation")
public abstract class FacingEnergyBlock extends EnergyBlock {
public static final DirectionProperty FACING = Properties.FACING;

View File

@ -1,11 +1,11 @@
package com.thebrokenrail.energonrelics.energy.core;
package com.thebrokenrail.energonrelics.api.block.entity.core;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.component.NetworkComponent;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTickable;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTicker;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTickable;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTicker;
import com.thebrokenrail.energonrelics.util.BlockPosWithDimension;
import net.fabricmc.fabric.api.block.entity.BlockEntityClientSerializable;
import net.minecraft.block.BlockState;
@ -25,11 +25,18 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* Block Entity That Provides Energy
*/
public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntityClientSerializable, Tickable, EnergyTickable {
public EnergyProviderBlockEntity(BlockEntityType<?> type) {
super(type);
}
/**
* Give Propagated Action To This Block
* @param action Action
*/
public final void addPropagatedAction(Action.PropagatedAction action) {
if (isEnergyProvider()) {
handlePropagatedAction(action);
@ -38,14 +45,28 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
}
}
/**
* Is In Energy Network
* @param network Network ID
* @return If Is In Network
*/
public final boolean isNetwork(int network) {
return isEnergyProvider() && EnergonRelics.NETWORK_CHIP_ITEM.getID(stack) == network;
}
/**
* Is Within Valid Distance Of Position
* @param pos Position
* @return Is Within Distance
*/
public final boolean isWithinDistance(Vec3d pos) {
return getPos().isWithinDistance(pos, HardcodedConfig.POWER_RANGE);
}
/**
* Get Current Dimension
* @return Current Dimension
*/
public RegistryKey<World> getRegistryKey() {
return Objects.requireNonNull(getWorld()).getRegistryKey();
}
@ -71,10 +92,18 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
}
}
/**
* Should Behave As Energy Provider
* @return Is Energy Provider
*/
public boolean isEnergyProvider() {
return false;
}
/**
* Override To Handle Propagated Action
* @param action Propagated Action
*/
protected void handlePropagatedAction(Action.PropagatedAction action) {
if (!isEnergyProvider()) {
throw new UnsupportedOperationException();
@ -115,6 +144,11 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
}
}
/**
* Take Network Chip Item Stack
* @param world World
* @return Item Stack
*/
public ItemStack takeStack(World world) {
ItemStack newStack = stack.copy();
setEnergyProviderSource(world, getPos(), newStack, true);
@ -123,12 +157,21 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit
return newStack;
}
/**
* Place Network Chip Item Stack
* @param newStack Item Stack
* @param world World
*/
public void placeStack(ItemStack newStack, World world) {
setEnergyProviderSource(world, getPos(), newStack, false);
stack = newStack.copy();
markDirty();
}
/**
* Has Item Stack
* @return Has Item Stack
*/
public boolean hasStack() {
return !stack.isEmpty();
}

View File

@ -1,8 +1,8 @@
package com.thebrokenrail.energonrelics.energy.core;
package com.thebrokenrail.energonrelics.api.block.entity.core;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.component.NetworkComponent;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTickable;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTickable;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.nbt.CompoundTag;
@ -14,6 +14,9 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Block Entity That Receives Energy
*/
public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntity {
public EnergyReceiverBlockEntity(BlockEntityType<?> type) {
super(type);
@ -27,10 +30,19 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit
private final List<Action.PropagatedAction> sent = new ArrayList<>();
/**
* If The Specified Action Has Been Sent By This Block this Tick
* @param action Action
* @return If It Was Sent
*/
protected boolean hasSent(Action.PropagatedAction action) {
return sent.contains(action);
}
/**
* Propagate Action To The Network's Energy Providers
* @param action Propagated Action
*/
protected void propagateAction(Action.PropagatedAction action) {
sent.add(action);
@ -45,6 +57,10 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit
}
}
/**
* Convert Action To A Propagated Action And Then Propagate It
* @param action Action
*/
protected void addAction(Action action) {
propagateAction(new Action.PropagatedActionImpl(action, getWorld(), getPos(), getCachedState()));
}
@ -89,6 +105,10 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit
getWorld().getProfiler().pop();
}
/**
* Get Total Cost In Energon
* @return Cost
*/
public long getTotalCost() {
return previousTotalCost;
}
@ -110,8 +130,15 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit
}
}
/**
* Create And Propagate Actions
*/
protected abstract void energyTick();
/**
* Toggle If This Is In The Specified Network
* @param network Network ID
*/
public void toggle(int network) {
if (contains(network)) {
networks.removeAll(Collections.singletonList(network));
@ -121,6 +148,11 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit
markDirty();
}
/**
* Check If The Specified Network Contains This Block
* @param network Network ID
* @return If It Contains This Block
*/
public boolean contains(int network) {
return networks.contains(network);
}

View File

@ -0,0 +1,36 @@
package com.thebrokenrail.energonrelics.api.block.entity.helper;
import com.thebrokenrail.energonrelics.api.energy.Action;
/**
* Interface Of A Block That Generates Energy
*/
public interface EnergyGenerator {
/**
* Handle Propagated Action
* @param action Action
*/
default void handlePropagatedActionWithGenerator(Action.PropagatedAction action) {
long amount = Math.min(getEnergy(), action.amountOwed());
setEnergy(getEnergy() - amount);
action.pay(amount);
}
/**
* Get Current Energy level
* @return Energy Level
*/
long getEnergy();
/**
* Set New Energy Level
* @param value New Energy Level
*/
void setEnergy(long value);
/**
* Get Energy To Be Displayed On Multimeter
* @return Energy Level
*/
long getDisplayEnergy();
}

View File

@ -1,9 +1,12 @@
package com.thebrokenrail.energonrelics.energy.helper;
package com.thebrokenrail.energonrelics.api.block.entity.helper;
import com.thebrokenrail.energonrelics.energy.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import net.minecraft.block.entity.BlockEntityType;
/**
* Simple Implementation Of A Energy Generator
*/
public abstract class EnergyGeneratorBlockEntity extends EnergyProviderBlockEntity implements EnergyGenerator {
public EnergyGeneratorBlockEntity(BlockEntityType<?> type) {
super(type);

View File

@ -1,10 +1,13 @@
package com.thebrokenrail.energonrelics.energy.core.util;
package com.thebrokenrail.energonrelics.api.energy;
import net.minecraft.block.BlockState;
import net.minecraft.state.property.Property;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
* Action That Can Be Performed With Energy
*/
public class Action {
public interface ActionFunction {
void run(World world, BlockPos pos, BlockState state);
@ -14,12 +17,27 @@ public class Action {
private final ActionFunction success;
private final ActionFunction fail;
/**
* Create Action
* @param cost Cost In Energon
* @param success Success Function
* @param fail Failure Function
*/
public Action(long cost, ActionFunction success, ActionFunction fail) {
this.cost = cost;
this.success = success;
this.fail = fail;
}
/**
* Create Action That Changes Block State Property
* @param cost Cost In Energon
* @param property Block State Property
* @param successValue Value To Set On Success
* @param failureValue Value To Set On Failure
* @param <T> Block State Property Type
* @return New Action
*/
public static <T extends Comparable<T>> Action createBlockStatePropertyAction(long cost, Property<T> property, T successValue, T failureValue) {
return new Action(cost, (world, pos, state) -> {
if (state.contains(property) && !state.get(property).equals(successValue)) {
@ -32,6 +50,9 @@ public class Action {
});
}
/**
* Action That Has Been Propagated
*/
public interface PropagatedAction {
void expandPayments(int amount);
long amountOwed();

View File

@ -0,0 +1,23 @@
package com.thebrokenrail.energonrelics.api.energy.tick;
import java.util.List;
/**
* Energy Tickable
*/
public interface EnergyTickable {
/**
* Start Tick
* @return Other Objects To Tick
*/
List<EnergyTickable> startTick();
/**
* Logic Tick
*/
void logicTick();
/**
* Get ID
* @return ID
*/
String getID();
}

View File

@ -1,4 +1,4 @@
package com.thebrokenrail.energonrelics.energy.core.util;
package com.thebrokenrail.energonrelics.api.energy.tick;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.component.NetworkComponent;
@ -10,13 +10,24 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* Energy Ticker
*/
public class EnergyTicker {
private static final List<EnergyTickable> scheduled = new ArrayList<>();
/**
* Schedule For Next Energy Tick
* @param tickable Object To Tick
*/
public static void schedule(EnergyTickable tickable) {
scheduled.add(tickable);
}
/**
* Tick Energy
* @param world World
*/
public static void tick(World world) {
if (Objects.requireNonNull(world.getServer()).getThread() == Thread.currentThread()) {
world.getProfiler().push(EnergonRelics.NAMESPACE);

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.BlockBreakerBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.FacingEnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.FacingEnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.CreativeEnergySourceBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Blocks;
import net.minecraft.block.entity.BlockEntity;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.DefensiveLaserBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.client.block.entity.render.DefensiveLaserBlockEntityRenderer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.EnergonLightBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.HolographicSkyBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.client.block.entity.render.HolographicSkyBlockEntityRenderer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.infuser.InfuserBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.SolarPanelBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;

View File

@ -1,16 +1,13 @@
package com.thebrokenrail.energonrelics.block;
import com.thebrokenrail.energonrelics.block.entity.SwitchBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Material;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.entity.Entity;
import net.minecraft.entity.ItemEntity;
import net.minecraft.fluid.WaterFluid;
import net.minecraft.item.ItemPlacementContext;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.state.StateManager;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.battery;
import com.thebrokenrail.energonrelics.block.entity.battery.ActiveBatteryControllerBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.FacingEnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.FacingEnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;

View File

@ -2,7 +2,7 @@ package com.thebrokenrail.energonrelics.block.battery;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.battery.BatteryCoreBlockEntity;
import com.thebrokenrail.energonrelics.block.util.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.item.MultimeterItem;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.battery;
import com.thebrokenrail.energonrelics.block.entity.battery.PassiveBatteryControllerBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.FacingEnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.FacingEnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;

View File

@ -1,9 +1,9 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.block.BlockBreakerBlock;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTickable;
import com.thebrokenrail.energonrelics.energy.helper.EnergyGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.api.block.entity.helper.EnergyGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTickable;
import net.minecraft.block.entity.BlockEntityType;
import java.util.List;

View File

@ -1,10 +1,10 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.DefensiveLaserBlock;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.mixin.DamageSourceAccessor;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;

View File

@ -1,9 +1,9 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.block.EnergonLightBlock;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import net.minecraft.block.entity.BlockEntityType;
public class EnergonLightBlockEntity extends EnergyReceiverBlockEntity {

View File

@ -1,9 +1,9 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.block.HolographicSkyBlock;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.LightType;

View File

@ -1,10 +1,10 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.api.block.entity.helper.EnergyGenerator;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTickable;
import com.thebrokenrail.energonrelics.energy.helper.EnergyGenerator;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTickable;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.entity.EntityType;

View File

@ -1,8 +1,8 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.helper.EnergyGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTickable;
import com.thebrokenrail.energonrelics.energy.helper.EnergyGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTickable;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.util.math.Direction;
import net.minecraft.world.LightType;

View File

@ -1,8 +1,8 @@
package com.thebrokenrail.energonrelics.block.entity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.block.SwitchBlock;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import net.minecraft.block.entity.BlockEntityType;
public class SwitchBlockEntity extends EnergyReceiverBlockEntity {

View File

@ -1,11 +1,11 @@
package com.thebrokenrail.energonrelics.block.entity.battery;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.block.entity.helper.EnergyGenerator;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.battery.PassiveBatteryControllerBlock;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.energy.helper.EnergyGenerator;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;

View File

@ -1,10 +1,10 @@
package com.thebrokenrail.energonrelics.block.entity.forcefield;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.block.forcefield.util.AbstractFieldBlock;
import com.thebrokenrail.energonrelics.block.forcefield.util.FieldProjectorBlock;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.util.math.BlockPos;

View File

@ -1,11 +1,14 @@
package com.thebrokenrail.energonrelics.block.entity.infuser;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.Action;
import com.thebrokenrail.energonrelics.block.InfuserBlock;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
import com.thebrokenrail.energonrelics.item.MultimeterItem;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserAction;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserEntry;
import com.thebrokenrail.energonrelics.registry.infuser.InfuserRegistry;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.item.Item;

View File

@ -1,11 +1,12 @@
package com.thebrokenrail.energonrelics.block.entity.reactor;
import com.thebrokenrail.energonrelics.api.block.entity.helper.EnergyGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.block.battery.PassiveBatteryControllerBlock;
import com.thebrokenrail.energonrelics.block.entity.battery.PassiveBatteryControllerBlockEntity;
import com.thebrokenrail.energonrelics.block.reactor.ReactorControllerBlock;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTickable;
import com.thebrokenrail.energonrelics.energy.helper.EnergyGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTickable;
import com.thebrokenrail.energonrelics.registry.reactor.ReactorFuelRegistry;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;

View File

@ -2,7 +2,7 @@ package com.thebrokenrail.energonrelics.block.forcefield.util;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.forcefield.FieldProjectorBlockEntity;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.forcefield.util;
import com.thebrokenrail.energonrelics.block.entity.forcefield.FieldProjectorBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.FacingEnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.FacingEnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -2,13 +2,12 @@ package com.thebrokenrail.energonrelics.block.lightning;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.LightningRodBaseBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.DoorBlock;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;
import net.minecraft.block.ShapeContext;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.lightning;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import com.thebrokenrail.energonrelics.util.MissingCaseException;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

View File

@ -1,6 +1,6 @@
package com.thebrokenrail.energonrelics.block.misc;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;

View File

@ -1,6 +1,6 @@
package com.thebrokenrail.energonrelics.block.misc;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;

View File

@ -1,6 +1,6 @@
package com.thebrokenrail.energonrelics.block.misc;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.portal;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.portal;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.util.SimpleBlock;
import com.thebrokenrail.energonrelics.api.block.SimpleBlock;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.reactor;
import com.thebrokenrail.energonrelics.block.entity.reactor.ReactorControllerBlockEntity;
import com.thebrokenrail.energonrelics.block.util.energy.FacingEnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.FacingEnergyBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.block.reactor;
import com.thebrokenrail.energonrelics.block.entity.reactor.ReactorCoreBlockEntity;
import com.thebrokenrail.energonrelics.block.util.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;

View File

@ -2,7 +2,7 @@ package com.thebrokenrail.energonrelics.block.reactor;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.reactor.ReactorInputBlockEntity;
import com.thebrokenrail.energonrelics.block.util.SimpleBlockWithEntity;
import com.thebrokenrail.energonrelics.api.block.SimpleBlockWithEntity;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.BlockState;
import net.minecraft.block.Material;

View File

@ -2,7 +2,7 @@ package com.thebrokenrail.energonrelics.block.structure;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.structure.StructureGeneratorBlockEntity;
import com.thebrokenrail.energonrelics.block.util.SimpleBlockWithEntity;
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;
@ -106,8 +106,8 @@ public class StructureGeneratorBlock extends SimpleBlockWithEntity {
}
@Override
public void register(String name) {
super.register(name + "_generator");
public void register(Identifier id) {
super.register(new Identifier(id.getNamespace(), id.getPath() + "_generator"));
}
@SuppressWarnings("SameParameterValue")

View File

@ -1,47 +0,0 @@
package com.thebrokenrail.energonrelics.block.util;
import com.thebrokenrail.energonrelics.EnergonRelics;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.block.Block;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.util.Identifier;
import net.minecraft.util.Rarity;
import net.minecraft.util.registry.Registry;
public class SimpleBlock extends Block {
public SimpleBlock(Settings settings) {
super(settings);
}
public void register(String name) {
Registry.register(Registry.BLOCK, new Identifier(EnergonRelics.NAMESPACE, name), this);
if (registerItem()) {
Item.Settings settings = new Item.Settings();
if (addToItemGroup() || FabricLoader.getInstance().isDevelopmentEnvironment()) {
settings.group(EnergonRelics.ITEM_GROUP);
}
if (isEpic()) {
settings.rarity(Rarity.EPIC);
}
settings.maxCount(getMaxCount());
Registry.register(Registry.ITEM, new Identifier(EnergonRelics.NAMESPACE, name), new BlockItem(this, settings));
}
}
protected boolean addToItemGroup() {
return true;
}
protected boolean registerItem() {
return true;
}
protected int getMaxCount() {
return 64;
}
protected boolean isEpic() {
return false;
}
}

View File

@ -2,7 +2,7 @@ package com.thebrokenrail.energonrelics.client;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.forcefield.util.AbstractFieldBlock;
import com.thebrokenrail.energonrelics.block.util.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.api.block.energy.EnergyBlock;
import com.thebrokenrail.energonrelics.client.config.UserConfig;
import me.sargunvohra.mcmods.autoconfig1u.AutoConfig;
import me.sargunvohra.mcmods.autoconfig1u.ConfigData;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.client.block.entity.render;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.mixin.RenderPhaseAccessor;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;

View File

@ -1,9 +1,9 @@
package com.thebrokenrail.energonrelics.client.rei.infuser;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.infuser.InfuserEntry;
import com.thebrokenrail.energonrelics.block.entity.infuser.InfuserOutputItem;
import com.thebrokenrail.energonrelics.block.entity.infuser.InfuserRegistry;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserEntry;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserOutputItem;
import com.thebrokenrail.energonrelics.registry.infuser.InfuserRegistry;
import com.thebrokenrail.energonrelics.client.rei.EnergonRelicsPlugin;
import com.thebrokenrail.energonrelics.config.HardcodedConfig;
import com.thebrokenrail.energonrelics.util.BooleanIterator;

View File

@ -1,6 +1,6 @@
package com.thebrokenrail.energonrelics.client.rei.infuser;
import com.thebrokenrail.energonrelics.block.entity.infuser.InfuserOutputItem;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserOutputItem;
import com.thebrokenrail.energonrelics.client.rei.EnergonRelicsPlugin;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.client.rei.reactor;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.reactor.ReactorFuelRegistry;
import com.thebrokenrail.energonrelics.registry.reactor.ReactorFuelRegistry;
import com.thebrokenrail.energonrelics.client.rei.EnergonRelicsPlugin;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.component;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.energy.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyProviderBlockEntity;
import com.thebrokenrail.energonrelics.util.BlockPosWithDimension;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.nbt.CompoundTag;

View File

@ -1,9 +0,0 @@
package com.thebrokenrail.energonrelics.energy.core.util;
import java.util.List;
public interface EnergyTickable {
List<EnergyTickable> startTick();
void logicTick();
String getID();
}

View File

@ -1,16 +0,0 @@
package com.thebrokenrail.energonrelics.energy.helper;
import com.thebrokenrail.energonrelics.energy.core.util.Action;
public interface EnergyGenerator {
default void handlePropagatedActionWithGenerator(Action.PropagatedAction action) {
long amount = Math.min(getEnergy(), action.amountOwed());
setEnergy(getEnergy() - amount);
action.pay(amount);
}
long getEnergy();
void setEnergy(long value);
long getDisplayEnergy();
}

View File

@ -1,8 +1,8 @@
package com.thebrokenrail.energonrelics.item;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.energy.helper.EnergyGenerator;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.api.block.entity.helper.EnergyGenerator;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemUsageContext;

View File

@ -1,8 +1,8 @@
package com.thebrokenrail.energonrelics.item;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyReceiverBlockEntity;
import com.thebrokenrail.energonrelics.component.NetworkComponent;
import com.thebrokenrail.energonrelics.energy.core.EnergyReceiverBlockEntity;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.block.entity.BlockEntity;

View File

@ -1,7 +1,7 @@
package com.thebrokenrail.energonrelics.mixin;
import com.thebrokenrail.energonrelics.block.forcefield.util.AbstractFieldBlock;
import com.thebrokenrail.energonrelics.energy.core.util.EnergyTicker;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTicker;
import net.minecraft.block.Block;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;

View File

@ -1,6 +1,8 @@
package com.thebrokenrail.energonrelics.block.entity.infuser;
package com.thebrokenrail.energonrelics.registry.infuser;
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserAction;
import com.thebrokenrail.energonrelics.registry.infuser.data.InfuserEntry;
import net.minecraft.item.DyeItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -15,14 +17,27 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Infuser Registry
*/
public class InfuserRegistry {
private static final Map<Item, InfuserEntry> map = new HashMap<>();
static InfuserEntry get(Item item) {
/**
* Get From Registry
* @param item Input Item
* @return Infuser Registry Entry
*/
public static InfuserEntry get(Item item) {
return map.get(item);
}
private static void add(Item item, InfuserEntry entry) {
/**
* Add To Registry
* @param item Input Item
* @param entry Infuser Registry Entry
*/
public static void add(Item item, InfuserEntry entry) {
map.put(item, entry);
}
@ -30,7 +45,12 @@ public class InfuserRegistry {
return map.entrySet();
}
static String toString(InfuserEntry entry) {
/**
* Convert Infuser Registry Entry To String
* @param entry Infuser Registry Entry
* @return String
*/
public static String toString(InfuserEntry entry) {
Item item = null;
for (Map.Entry<Item, InfuserEntry> mapEntry : entrySet()) {
if (mapEntry.getValue() == entry) {
@ -46,7 +66,12 @@ public class InfuserRegistry {
}
}
static InfuserEntry fromString(String str) {
/**
* Get Infuser Registry Entry From String
* @param str String
* @return Infuser Registry Entry
*/
public static InfuserEntry fromString(String str) {
Item item = Registry.ITEM.get(new Identifier(str));
return map.getOrDefault(item, null);
}

View File

@ -1,4 +1,4 @@
package com.thebrokenrail.energonrelics.block.entity.infuser;
package com.thebrokenrail.energonrelics.registry.infuser.data;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@ -13,20 +13,31 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.explosion.Explosion;
interface InfuserAction {
/**
* Infuser Action
*/
public interface InfuserAction {
/**
* Run Infuser Action
* @param world World
* @param pos Infuser Position
*/
void run(World world, BlockPos pos);
@Environment(EnvType.CLIENT)
InfuserOutputItem display();
/**
* Infuser Action That Creates An Item
*/
class ItemAction implements InfuserAction {
final ItemStack stack;
ItemAction(ItemStack stack) {
public ItemAction(ItemStack stack) {
this.stack = stack;
}
ItemAction(Item item) {
public ItemAction(Item item) {
this(new ItemStack(item));
}
@ -42,6 +53,9 @@ interface InfuserAction {
}
}
/**
* Infuser Action That Creates An Explosion
*/
class ExplosionAction implements InfuserAction {
@Override
public void run(World world, BlockPos pos) {
@ -56,6 +70,9 @@ interface InfuserAction {
}
}
/**
* Infuser Action That Creates Some Particles
*/
class ParticleAction implements InfuserAction {
@Override
public void run(World world, BlockPos pos) {

View File

@ -1,4 +1,4 @@
package com.thebrokenrail.energonrelics.block.entity.infuser;
package com.thebrokenrail.energonrelics.registry.infuser.data;
import com.thebrokenrail.energonrelics.util.WeightedList;
import net.fabricmc.api.EnvType;
@ -9,20 +9,41 @@ import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.List;
/**
* Infuser Registry Entry
*/
public class InfuserEntry {
/**
* Energy Cost
*/
public final long cost;
/**
* Success Chance
*/
public final double successChance;
private final InfuserAction[] success;
private final InfuserAction[] fail;
InfuserEntry(long cost, double successChance, InfuserAction[] success, InfuserAction[] fail) {
/**
* Create Infuser Registry Entry
* @param cost Energy Cost
* @param successChance Success Chance
* @param success Success Actions
* @param fail Failure Actions
*/
public InfuserEntry(long cost, double successChance, InfuserAction[] success, InfuserAction[] fail) {
this.cost = cost;
this.successChance = successChance;
this.success = success;
this.fail = fail;
}
void run(World world, BlockPos pos) {
/**
* Pick Action And Run It
* @param world World
* @param pos Infuser Position
*/
public void run(World world, BlockPos pos) {
boolean isSuccess = world.random.nextDouble() <= successChance;
InfuserAction[] list;

View File

@ -1,4 +1,4 @@
package com.thebrokenrail.energonrelics.block.entity.infuser;
package com.thebrokenrail.energonrelics.registry.infuser.data;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

View File

@ -1,4 +1,4 @@
package com.thebrokenrail.energonrelics.block.entity.reactor;
package com.thebrokenrail.energonrelics.registry.reactor;
import com.thebrokenrail.energonrelics.EnergonRelics;
import net.fabricmc.api.EnvType;
@ -9,13 +9,26 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class ReactorFuelRegistry {
/**
* Reactor Fuel Registry
*/
public final class ReactorFuelRegistry {
private static final Map<Item, Float> map = new HashMap<>();
private static void add(Item item, float multiplier) {
/**
* Add To Registry
* @param item Fuel Item
* @param multiplier Fuel Multiplier
*/
public static void add(Item item, float multiplier) {
map.put(item, multiplier);
}
/**
* Get From Registry
* @param item Fuel Item
* @return Fuel Multiplier
*/
public static float get(Item item) {
return map.getOrDefault(item, 0f);
}