From d7d093db20479a629f431f4d5aa28c2eeeff01f0 Mon Sep 17 00:00:00 2001 From: arzumify Date: Fri, 7 Mar 2025 16:56:54 +0000 Subject: [PATCH] More wheels to reinvent! Yayy! --- build.gradle | 3 + .../cursedenergy/api/EnergyBlock.java | 4 +- .../cursedenergy/api/SearchForNeighbours.java | 27 +--- src/test/java/EnergyTests.java | 4 - src/test/java/SimpleCodeOnlyBattery.java | 0 src/test/java/SimpleCodeOnlyCable.java | 118 ------------------ 6 files changed, 8 insertions(+), 148 deletions(-) delete mode 100644 src/test/java/EnergyTests.java delete mode 100644 src/test/java/SimpleCodeOnlyBattery.java delete mode 100644 src/test/java/SimpleCodeOnlyCable.java diff --git a/build.gradle b/build.gradle index c768dc3..b82eb28 100644 --- a/build.gradle +++ b/build.gradle @@ -36,6 +36,9 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + // Located + implementation "arzumify:located:1.0.0" } processResources { diff --git a/src/main/java/arzumify/cursedenergy/api/EnergyBlock.java b/src/main/java/arzumify/cursedenergy/api/EnergyBlock.java index ce79283..9a06978 100644 --- a/src/main/java/arzumify/cursedenergy/api/EnergyBlock.java +++ b/src/main/java/arzumify/cursedenergy/api/EnergyBlock.java @@ -1,4 +1,6 @@ package arzumify.cursedenergy.api; -public interface EnergyBlock { +import arzumify.located.api.Provider; + +public interface EnergyBlock extends Provider { } diff --git a/src/main/java/arzumify/cursedenergy/api/SearchForNeighbours.java b/src/main/java/arzumify/cursedenergy/api/SearchForNeighbours.java index 8e234b6..40c6ee5 100644 --- a/src/main/java/arzumify/cursedenergy/api/SearchForNeighbours.java +++ b/src/main/java/arzumify/cursedenergy/api/SearchForNeighbours.java @@ -1,30 +1,7 @@ package arzumify.cursedenergy.api; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3i; -import net.minecraft.world.World; - -import java.util.HashSet; -import java.util.Set; +import arzumify.located.impl.MatchMaker; public class SearchForNeighbours { - private static final Vec3i[] directions = new Vec3i[]{ - new Vec3i(1, 0, 0), - new Vec3i(-1, 0, 0), - new Vec3i(0, 1, 0), - new Vec3i(0, -1, 0), - new Vec3i(0, 0, 1), - new Vec3i(0, 0, -1) - }; - - public static Set searchForNeighbours(World world, BlockPos pos) { - var neighbours = new HashSet(); - for (var direction : directions) { - var entity = world.getBlockEntity(pos.add(direction)); - if (entity instanceof EnergyBlock) { - neighbours.add((EnergyBlock) entity); - } - } - return neighbours; - } + public static MatchMaker matchMaker = new MatchMaker<>(); } diff --git a/src/test/java/EnergyTests.java b/src/test/java/EnergyTests.java deleted file mode 100644 index 0fdce8c..0000000 --- a/src/test/java/EnergyTests.java +++ /dev/null @@ -1,4 +0,0 @@ -/* -TESTS ARE BROKEN IN CURSED EDITION -DO NOT TRY TO TEST - */ \ No newline at end of file diff --git a/src/test/java/SimpleCodeOnlyBattery.java b/src/test/java/SimpleCodeOnlyBattery.java deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/SimpleCodeOnlyCable.java b/src/test/java/SimpleCodeOnlyCable.java deleted file mode 100644 index e334b56..0000000 --- a/src/test/java/SimpleCodeOnlyCable.java +++ /dev/null @@ -1,118 +0,0 @@ -import arzumify.cursedenergy.api.EnergyProvider; -import arzumify.cursedenergy.api.EnergyReceiver; -import net.fabricmc.fabric.api.event.lifecycle.v1.ServerBlockEntityEvents; -import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.Vec3i; - -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import static arzumify.cursedenergy.api.SearchForNeighbours.searchForNeighbours; - -/** - * SimpleCable, but implemented using only the API and not the actual block entity for testing purposes. - * All fields are public for testing purposes. - */ -public class SimpleCodeOnlyCable implements EnergyProvider, EnergyReceiver, ServerBlockEntityEvents.Unload, ServerBlockEntityEvents.Load, ServerTickEvents.EndTick { - public final long capacity; - public final long inputRate; - public final long outputRate; - public final String name; - public final Set providers = ConcurrentHashMap.newKeySet(); - public final Set blackListed = ConcurrentHashMap.newKeySet(); - public final Set receivers = ConcurrentHashMap.newKeySet(); - public long energy = 0; - - public SimpleCodeOnlyCable(Vec3i pos, long capacity, long inputRate, long outputRate, String name) { - this.capacity = capacity; - this.inputRate = inputRate; - this.outputRate = outputRate; - this.name = name; - } - - public static void tick(SimpleCodeOnlyCable Cable) { - System.out.println(Cable.name + " ticking"); - // Split the energy between all receivers - var energyToGive = Cable.energy / Cable.receivers.size(); - - for (EnergyReceiver receiver : Cable.receivers) { - var taken = receiver.receive(energyToGive, Cable); - Cable.energy -= taken; - if (receiver instanceof EnergyProvider) { - Cable.blackListed.add((EnergyProvider) receiver); - } - } - } - - @Override - public long receive(long amount, EnergyProvider provider) { - if (!blackListed.contains(provider)) { - System.out.println(name + " receiving " + amount + " energy"); - long received = Math.min(Math.min(inputRate, amount), capacity - energy); - energy += received; - System.out.println(name + " received " + received + " energy"); - blackListed.add(provider); - return received; - } else { - return 0; - } - } - - @Override - public void ready(EnergyReceiver receiver) { - System.out.println(name + " found other receiver"); - receivers.add(receiver); - receiver.ready(this); - } - - @Override - public void ready(EnergyProvider provider) { - System.out.println(name + " found other provider"); - providers.add(provider); - } - - @Override - public void unready(EnergyReceiver receiver) { - System.out.println(name + " lost other receiver"); - receivers.remove(receiver); - } - - @Override - public void unready(EnergyProvider provider) { - System.out.println(name + " lost other provider"); - providers.remove(provider); - } - - @Override - public void onLoad(BlockEntity blockEntity, ServerWorld serverWorld) { - var energyBlocks = searchForNeighbours(serverWorld, blockEntity.getPos()); - for (var block : energyBlocks) { - if (block instanceof EnergyProvider) { - ((EnergyProvider) block).ready(this); - } - if (block instanceof EnergyReceiver) { - ready((EnergyReceiver) block); - } - } - } - - @Override - public void onUnload(BlockEntity blockEntity, ServerWorld serverWorld) { - for (var provider : providers) { - provider.unready(this); - } - providers.clear(); - for (var receiver : receivers) { - receiver.unready(this); - } - receivers.clear(); - } - - @Override - public void onEndTick(MinecraftServer server) { - blackListed.clear(); - } -}