diff --git a/build.gradle b/build.gradle index 47d9c0f..eafc263 100644 --- a/build.gradle +++ b/build.gradle @@ -47,6 +47,8 @@ dependencies { modImplementation "net.earthcomputer:libstructure:${project.libstructure_version}" include "net.earthcomputer:libstructure:${project.libstructure_version}" + + compileOnly "org.jetbrains:annotations:${project.jetbrains_annotations_version}" } publishing { diff --git a/gradle.properties b/gradle.properties index 2172b39..c35802a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,4 @@ org.gradle.jvmargs = -Xmx1G autoconfig_version = 3.2.0-unstable libstructure_version = 1.4.1 roughlyenoughitems_version = 5.1.0-unstable + jetbrains_annotations_version = 19.0.0 diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/block/SimpleBlock.java b/src/main/java/com/thebrokenrail/energonrelics/api/block/SimpleBlock.java index c67f430..6b68a3b 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/block/SimpleBlock.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/block/SimpleBlock.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemGroup; import net.minecraft.util.Identifier; import net.minecraft.util.Rarity; import net.minecraft.util.registry.Registry; +import org.jetbrains.annotations.ApiStatus; /** * Simple Block @@ -50,6 +51,7 @@ public class SimpleBlock extends Block { * @return Item Group */ @SuppressWarnings("SameReturnValue") + @ApiStatus.OverrideOnly protected ItemGroup getItemGroup() { return EnergonRelics.ITEM_GROUP; } @@ -58,6 +60,7 @@ public class SimpleBlock extends Block { * Should The Block item be Added To An Item Group In A Non-Development Environment * @return Should it Be Added */ + @ApiStatus.OverrideOnly protected boolean addToItemGroup() { return true; } @@ -66,6 +69,7 @@ public class SimpleBlock extends Block { * Should A Block Item Be Registered * @return Should It Be Registered */ + @ApiStatus.OverrideOnly protected boolean registerItem() { return true; } @@ -74,6 +78,7 @@ public class SimpleBlock extends Block { * Get Max Stack Count * @return Max Stack Count */ + @ApiStatus.OverrideOnly protected int getMaxCount() { return 64; } @@ -82,6 +87,7 @@ public class SimpleBlock extends Block { * Should The Item Rarity be Epic * @return Should It Be Epic */ + @ApiStatus.OverrideOnly protected boolean isEpic() { return false; } diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyProviderBlockEntity.java b/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyProviderBlockEntity.java index 32cd86a..1cb99cc 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyProviderBlockEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyProviderBlockEntity.java @@ -20,6 +20,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.util.registry.RegistryKey; import net.minecraft.world.World; +import org.jetbrains.annotations.ApiStatus; import java.util.Collections; import java.util.List; @@ -37,6 +38,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * Give Propagated Action To This Block * @param action Action */ + @ApiStatus.Internal public final void addPropagatedAction(Action.PropagatedAction action) { if (isEnergyProvider()) { handlePropagatedAction(action); @@ -50,6 +52,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * @param network Network ID * @return If Is In Network */ + @ApiStatus.Internal public final boolean isNetwork(int network) { return isEnergyProvider() && EnergonRelics.NETWORK_CHIP_ITEM.getID(stack) == network; } @@ -59,6 +62,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * @param pos Position * @return Is Within Distance */ + @ApiStatus.Internal public final boolean isWithinDistance(Vec3d pos) { return getPos().isWithinDistance(pos, HardcodedConfig.POWER_RANGE); } @@ -67,6 +71,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * Get Current Dimension * @return Current Dimension */ + @ApiStatus.Internal public RegistryKey getRegistryKey() { return Objects.requireNonNull(getWorld()).getRegistryKey(); } @@ -96,6 +101,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * Should Behave As Energy Provider * @return Is Energy Provider */ + @ApiStatus.OverrideOnly public boolean isEnergyProvider() { return false; } @@ -104,6 +110,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * Override To Handle Propagated Action * @param action Propagated Action */ + @ApiStatus.OverrideOnly protected void handlePropagatedAction(Action.PropagatedAction action) { if (!isEnergyProvider()) { throw new UnsupportedOperationException(); @@ -149,6 +156,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * @param world World * @return Item Stack */ + @ApiStatus.Internal public ItemStack takeStack(World world) { ItemStack newStack = stack.copy(); setEnergyProviderSource(world, getPos(), newStack, true); @@ -162,6 +170,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * @param newStack Item Stack * @param world World */ + @ApiStatus.Internal public void placeStack(ItemStack newStack, World world) { setEnergyProviderSource(world, getPos(), newStack, false); stack = newStack.copy(); @@ -172,6 +181,7 @@ public class EnergyProviderBlockEntity extends BlockEntity implements BlockEntit * Has Item Stack * @return Has Item Stack */ + @ApiStatus.Internal public boolean hasStack() { return !stack.isEmpty(); } diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyReceiverBlockEntity.java b/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyReceiverBlockEntity.java index 16e0dc3..38620ca 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyReceiverBlockEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/core/EnergyReceiverBlockEntity.java @@ -9,6 +9,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntArrayTag; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Vec3d; +import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.Collections; @@ -35,7 +36,7 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit * @param action Action * @return If It Was Sent */ - protected boolean hasSent(Action.PropagatedAction action) { + protected final boolean hasSent(Action.PropagatedAction action) { return sent.contains(action); } @@ -43,7 +44,7 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit * Propagate Action To The Network's Energy Providers * @param action Propagated Action */ - protected void propagateAction(Action.PropagatedAction action) { + protected final void propagateAction(Action.PropagatedAction action) { sent.add(action); totalCost = totalCost + action.amountOwed(); @@ -61,12 +62,12 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit * Convert Action To A Propagated Action And Then Propagate It * @param action Action */ - protected void addAction(Action action) { + protected final void addAction(Action action) { propagateAction(new Action.PropagatedActionImpl(action, getWorld(), getPos(), getCachedState())); } @Override - public List startTick() { + public final List startTick() { sent.clear(); List list = new ArrayList<>(super.startTick()); @@ -97,7 +98,7 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit } @Override - public void logicTick() { + public final void logicTick() { super.logicTick(); assert getWorld() != null; getWorld().getProfiler().push("energyTick"); @@ -109,7 +110,8 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit * Get Total Cost In Energon * @return Cost */ - public long getTotalCost() { + @ApiStatus.Internal + public final long getTotalCost() { return previousTotalCost; } @@ -133,12 +135,14 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit /** * Create And Propagate Actions */ + @ApiStatus.OverrideOnly protected abstract void energyTick(); /** * Toggle If This Is In The Specified Network * @param network Network ID */ + @ApiStatus.Internal public void toggle(int network) { if (contains(network)) { networks.removeAll(Collections.singletonList(network)); @@ -153,6 +157,7 @@ public abstract class EnergyReceiverBlockEntity extends EnergyProviderBlockEntit * @param network Network ID * @return If It Contains This Block */ + @ApiStatus.Internal public boolean contains(int network) { return networks.contains(network); } diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/helper/EnergyGeneratorBlockEntity.java b/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/helper/EnergyGeneratorBlockEntity.java index ed97c4f..7d23456 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/helper/EnergyGeneratorBlockEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/block/entity/helper/EnergyGeneratorBlockEntity.java @@ -3,6 +3,7 @@ package com.thebrokenrail.energonrelics.api.block.entity.helper; import com.thebrokenrail.energonrelics.api.block.entity.core.EnergyProviderBlockEntity; import com.thebrokenrail.energonrelics.api.energy.Action; import net.minecraft.block.entity.BlockEntityType; +import org.jetbrains.annotations.ApiStatus; /** * Simple Implementation Of A Energy Generator @@ -15,17 +16,17 @@ public abstract class EnergyGeneratorBlockEntity extends EnergyProviderBlockEnti private long energy = 0; @Override - public boolean isEnergyProvider() { + public final boolean isEnergyProvider() { return true; } @Override - public long getEnergy() { + public final long getEnergy() { return energy; } @Override - public void setEnergy(long value) { + public final void setEnergy(long value) { if (value < 0) { throw new UnsupportedOperationException(); } @@ -33,11 +34,12 @@ public abstract class EnergyGeneratorBlockEntity extends EnergyProviderBlockEnti } @Override - protected void handlePropagatedAction(Action.PropagatedAction action) { + protected final void handlePropagatedAction(Action.PropagatedAction action) { super.handlePropagatedAction(action); handlePropagatedActionWithGenerator(action); } @Override + @ApiStatus.OverrideOnly public abstract long getDisplayEnergy(); } \ No newline at end of file diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/energy/Action.java b/src/main/java/com/thebrokenrail/energonrelics/api/energy/Action.java index 1101c7b..87186fa 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/energy/Action.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/energy/Action.java @@ -4,6 +4,7 @@ import net.minecraft.block.BlockState; import net.minecraft.state.property.Property; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import org.jetbrains.annotations.ApiStatus; /** * Action That Can Be Performed With Energy @@ -84,6 +85,7 @@ public class Action { /** * Simple Implementation Of A Propagated Action */ + @ApiStatus.Internal public static class PropagatedActionImpl implements PropagatedAction { private final Action action; private final World world; diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java index af50af2..b90ef77 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTickable.java @@ -1,5 +1,7 @@ package com.thebrokenrail.energonrelics.api.energy.tick; +import org.jetbrains.annotations.ApiStatus; + import java.util.List; /** @@ -10,14 +12,17 @@ public interface EnergyTickable { * Start Tick * @return Other Objects To Tick */ + @ApiStatus.OverrideOnly List startTick(); /** * Logic Tick */ + @ApiStatus.OverrideOnly void logicTick(); /** * Get ID * @return ID */ + @ApiStatus.OverrideOnly String getID(); } diff --git a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java index b0e4c16..cb9c185 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java +++ b/src/main/java/com/thebrokenrail/energonrelics/api/energy/tick/EnergyTicker.java @@ -4,6 +4,7 @@ import com.thebrokenrail.energonrelics.EnergonRelics; import com.thebrokenrail.energonrelics.component.NetworkComponent; import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; +import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.Collections; @@ -13,6 +14,7 @@ import java.util.Objects; /** * Energy Ticker */ +@ApiStatus.Internal public class EnergyTicker { private static final List scheduled = new ArrayList<>(); diff --git a/src/main/java/com/thebrokenrail/energonrelics/component/NetworkComponent.java b/src/main/java/com/thebrokenrail/energonrelics/component/NetworkComponent.java index 9e2ceef..af66e91 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/component/NetworkComponent.java +++ b/src/main/java/com/thebrokenrail/energonrelics/component/NetworkComponent.java @@ -184,10 +184,11 @@ public class NetworkComponent extends PersistentState { public List getSources(World world, int id) { world.getProfiler().push("getSources"); - List result; + List result = getSourcesFromCache(world, id); - List cacheResult = getSourcesFromCache(world, id); - result = Objects.requireNonNullElseGet(cacheResult, () -> getSourcesFromCacheMiss(world, id)); + if (result == null) { + result = getSourcesFromCacheMiss(world, id); + } world.getProfiler().pop(); return result;