From 366a7bb2e38a04d759fd55f4cdee7ed0c35d22dc Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 14 Aug 2024 11:06:22 +0200 Subject: [PATCH] refactor: remove AbstractSchedulingNetworkNodeContainerBlockEntity --- .../ConstructorBlockEntity.java | 96 ++++++++++++------- .../ConstructorContainerMenu.java | 27 +++++- .../DestructorBlockEntity.java | 2 +- .../common/detector/DetectorBlockEntity.java | 2 +- .../common/exporter/ExporterBlockEntity.java | 74 ++++++++++++-- .../exporter/ExporterContainerMenu.java | 35 ++++++- .../common/grid/AbstractGridBlockEntity.java | 2 +- .../common/importer/ImporterBlockEntity.java | 2 +- .../WirelessTransmitterBlockEntity.java | 2 +- .../AbstractDiskContainerBlockEntity.java | 2 +- .../ExternalStorageBlockEntity.java | 2 +- .../StorageMonitorBlockEntity.java | 2 +- .../support/AbstractDirectionalBlock.java | 3 +- .../common/support/SchedulingMode.java | 68 ------------- .../support/SchedulingModeContainer.java | 67 +++++++++++++ .../common/support/SchedulingModeType.java | 57 ++++------- .../AbstractSchedulingContainerMenu.java | 61 ------------ .../AbstractSimpleFilterContainerMenu.java | 3 +- ...dulingNetworkNodeContainerBlockEntity.java | 91 ------------------ .../BaseNetworkNodeContainerBlockEntity.java | 5 +- .../api/network/node/SchedulingMode.java | 16 ++++ .../api/network/node/task/Task.java | 9 -- .../api/network/node/task/TaskExecutor.java | 11 --- .../api/network/node/task/package-info.java | 7 -- .../node/exporter/ExporterNetworkNode.java | 32 +++---- .../impl/node/task/DefaultSchedulingMode.java | 16 ++++ .../impl/node/task/DefaultTaskExecutor.java | 17 ---- .../impl/node/task/RandomSchedulingMode.java | 32 +++++++ .../impl/node/task/RandomTaskExecutor.java | 33 ------- ...tor.java => RoundRobinSchedulingMode.java} | 13 ++- .../AbstractExporterNetworkNodeTest.java | 8 +- ...va => DefaultExporterNetworkNodeTest.java} | 10 +- .../RandomExporterNetworkNodeTest.java | 12 +-- .../RoundRobinExporterNetworkNodeTest.java | 8 +- 34 files changed, 388 insertions(+), 439 deletions(-) delete mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingMode.java create mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeContainer.java delete mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSchedulingContainerMenu.java delete mode 100644 refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/AbstractSchedulingNetworkNodeContainerBlockEntity.java create mode 100644 refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/SchedulingMode.java delete mode 100644 refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/Task.java delete mode 100644 refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/TaskExecutor.java delete mode 100644 refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/package-info.java create mode 100644 refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultSchedulingMode.java delete mode 100644 refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultTaskExecutor.java create mode 100644 refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomSchedulingMode.java delete mode 100644 refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomTaskExecutor.java rename refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/{RoundRobinTaskExecutor.java => RoundRobinSchedulingMode.java} (72%) rename refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/{FirstAvailableExporterNetworkNodeTest.java => DefaultExporterNetworkNodeTest.java} (94%) diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorBlockEntity.java index 049876aa7..6d528d714 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorBlockEntity.java @@ -3,8 +3,7 @@ import com.refinedmods.refinedstorage.api.network.Network; import com.refinedmods.refinedstorage.api.network.impl.node.SimpleNetworkNode; import com.refinedmods.refinedstorage.api.network.node.NetworkNodeActor; -import com.refinedmods.refinedstorage.api.network.node.task.Task; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.resource.ResourceKey; import com.refinedmods.refinedstorage.api.storage.Actor; import com.refinedmods.refinedstorage.common.Platform; @@ -15,7 +14,13 @@ import com.refinedmods.refinedstorage.common.content.ContentNames; import com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock; import com.refinedmods.refinedstorage.common.support.BlockEntityWithDrops; -import com.refinedmods.refinedstorage.common.support.network.AbstractSchedulingNetworkNodeContainerBlockEntity; +import com.refinedmods.refinedstorage.common.support.FilterWithFuzzyMode; +import com.refinedmods.refinedstorage.common.support.SchedulingModeContainer; +import com.refinedmods.refinedstorage.common.support.SchedulingModeType; +import com.refinedmods.refinedstorage.common.support.containermenu.NetworkNodeExtendedMenuProvider; +import com.refinedmods.refinedstorage.common.support.network.BaseNetworkNodeContainerBlockEntity; +import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; +import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerImpl; import com.refinedmods.refinedstorage.common.upgrade.UpgradeContainer; import com.refinedmods.refinedstorage.common.upgrade.UpgradeDestinations; import com.refinedmods.refinedstorage.common.util.ContainerUtil; @@ -30,7 +35,9 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.network.codec.StreamEncoder; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -39,18 +46,17 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -public class ConstructorBlockEntity - extends AbstractSchedulingNetworkNodeContainerBlockEntity - implements BlockEntityWithDrops { +public class ConstructorBlockEntity extends BaseNetworkNodeContainerBlockEntity + implements BlockEntityWithDrops, NetworkNodeExtendedMenuProvider { private static final String TAG_DROP_ITEMS = "di"; private static final String TAG_UPGRADES = "upgr"; private final Actor actor; - private final List tasks = new ArrayList<>(); + private final List tasks = new ArrayList<>(); private final UpgradeContainer upgradeContainer; + private final FilterWithFuzzyMode filter; + private final SchedulingModeContainer schedulingModeContainer; - @Nullable - private TaskExecutor taskExecutor; @Nullable private ConstructorStrategy strategy; private boolean dropItems; @@ -72,6 +78,12 @@ public ConstructorBlockEntity(final BlockPos pos, final BlockState state) { initialize(serverLevel); } }); + this.schedulingModeContainer = new SchedulingModeContainer(schedulingMode -> setChanged()); + this.filter = FilterWithFuzzyMode.createAndListenForFilters( + ResourceContainerImpl.createForFilter(), + this::setChanged, + this::setFilters + ); } @Override @@ -89,10 +101,9 @@ public boolean addUpgradeItem(final Item upgradeItem) { return upgradeContainer.addUpgradeItem(upgradeItem); } - @Override - protected void setFilters(final List filters) { + private void setFilters(final List filters) { this.tasks.clear(); - this.tasks.addAll(filters.stream().map(TaskImpl::new).toList()); + this.tasks.addAll(filters.stream().map(ConstructorTask::new).toList()); } @Override @@ -119,19 +130,13 @@ private ConstructorStrategy createStrategy(final ServerLevel serverLevel, final return new CompositeConstructorStrategy(strategies); } + // TODO: Move to own obj :) @Override public void postDoWork() { - if (taskExecutor == null - || mainNetworkNode.getNetwork() == null - || !mainNetworkNode.isActive() - || !(level instanceof ServerLevel serverLevel)) { + if (mainNetworkNode.getNetwork() == null || !mainNetworkNode.isActive()) { return; } - final Player fakePlayer = getFakePlayer(serverLevel); - taskExecutor.execute(tasks, new TaskContext( - mainNetworkNode.getNetwork(), - fakePlayer - )); + schedulingModeContainer.execute(tasks); } @Override @@ -152,6 +157,8 @@ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider pr public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) { super.writeConfiguration(tag, provider); tag.putBoolean(TAG_DROP_ITEMS, dropItems); + schedulingModeContainer.writeToTag(tag); + filter.save(tag, provider); } @Override @@ -160,6 +167,27 @@ public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider if (tag.contains(TAG_DROP_ITEMS)) { dropItems = tag.getBoolean(TAG_DROP_ITEMS); } + schedulingModeContainer.loadFromTag(tag); + filter.load(tag, provider); + } + + void setSchedulingModeType(final SchedulingModeType type) { + schedulingModeContainer.setType(type); + } + + SchedulingModeType getSchedulingModeType() { + return schedulingModeContainer.getType(); + } + + boolean isFuzzyMode() { + return filter.isFuzzyMode(); + } + + void setFuzzyMode(final boolean fuzzyMode) { + filter.setFuzzyMode(fuzzyMode); + if (level instanceof ServerLevel serverLevel) { + initialize(serverLevel); + } } @Override @@ -191,32 +219,36 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory invent } @Override - protected void setTaskExecutor(final TaskExecutor taskExecutor) { - this.taskExecutor = taskExecutor; + public ResourceContainerData getMenuData() { + return ResourceContainerData.of(filter.getFilterContainer()); } @Override - protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, - final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + public StreamEncoder getMenuCodec() { + return ResourceContainerData.STREAM_CODEC; } - protected record TaskContext(Network network, Player player) { + @Override + protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, + final BlockState newBlockState) { + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } - private class TaskImpl implements Task { + private class ConstructorTask implements SchedulingMode.ScheduledTask { private final ResourceKey filter; - private TaskImpl(final ResourceKey filter) { + private ConstructorTask(final ResourceKey filter) { this.filter = filter; } @Override - public boolean run(final TaskContext context) { - if (strategy == null) { + public boolean run() { + final Network network = mainNetworkNode.getNetwork(); + if (strategy == null || !(level instanceof ServerLevel serverLevel) || network == null) { return false; } - strategy.apply(filter, actor, context.player, context.network); + final Player player = getFakePlayer(serverLevel); + strategy.apply(filter, actor, player, network); return true; } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorContainerMenu.java index 2ba899e2b..3646d0010 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorContainerMenu.java @@ -2,8 +2,11 @@ import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; import com.refinedmods.refinedstorage.common.content.Menus; -import com.refinedmods.refinedstorage.common.support.containermenu.AbstractSchedulingContainerMenu; +import com.refinedmods.refinedstorage.common.support.RedstoneMode; +import com.refinedmods.refinedstorage.common.support.SchedulingModeType; +import com.refinedmods.refinedstorage.common.support.containermenu.AbstractSimpleFilterContainerMenu; import com.refinedmods.refinedstorage.common.support.containermenu.ClientProperty; +import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; import com.refinedmods.refinedstorage.common.support.containermenu.ServerProperty; import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; import com.refinedmods.refinedstorage.common.upgrade.UpgradeContainer; @@ -15,7 +18,7 @@ import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; -public class ConstructorContainerMenu extends AbstractSchedulingContainerMenu { +public class ConstructorContainerMenu extends AbstractSimpleFilterContainerMenu { private static final MutableComponent FILTER_HELP = createTranslation("gui", "constructor.filter_help"); public ConstructorContainerMenu(final int syncId, @@ -49,13 +52,29 @@ public ConstructorContainerMenu(final int syncId, @Override protected void registerClientProperties() { - super.registerClientProperties(); + registerProperty(new ClientProperty<>(PropertyTypes.FUZZY_MODE, false)); + registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); + registerProperty(new ClientProperty<>(PropertyTypes.SCHEDULING_MODE, SchedulingModeType.DEFAULT)); registerProperty(new ClientProperty<>(ConstructorDestructorPropertyTypes.DROP_ITEMS, false)); } @Override protected void registerServerProperties(final ConstructorBlockEntity blockEntity) { - super.registerServerProperties(blockEntity); + registerProperty(new ServerProperty<>( + PropertyTypes.FUZZY_MODE, + blockEntity::isFuzzyMode, + blockEntity::setFuzzyMode + )); + registerProperty(new ServerProperty<>( + PropertyTypes.REDSTONE_MODE, + blockEntity::getRedstoneMode, + blockEntity::setRedstoneMode + )); + registerProperty(new ServerProperty<>( + PropertyTypes.SCHEDULING_MODE, + blockEntity::getSchedulingModeType, + blockEntity::setSchedulingModeType + )); registerProperty(new ServerProperty<>( ConstructorDestructorPropertyTypes.DROP_ITEMS, blockEntity::isDropItems, diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/DestructorBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/DestructorBlockEntity.java index 0a1b459f2..4e9ab4685 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/DestructorBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/constructordestructor/DestructorBlockEntity.java @@ -216,6 +216,6 @@ public void postDoWork() { @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/detector/DetectorBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/detector/DetectorBlockEntity.java index 370cb256d..f603d125e 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/detector/DetectorBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/detector/DetectorBlockEntity.java @@ -173,6 +173,6 @@ public void updateActiveness(final BlockState state, @Nullable final BooleanProp @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterBlockEntity.java index 2e73b1868..8f6276d0f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterBlockEntity.java @@ -2,8 +2,8 @@ import com.refinedmods.refinedstorage.api.network.impl.node.exporter.CompositeExporterTransferStrategy; import com.refinedmods.refinedstorage.api.network.impl.node.exporter.ExporterNetworkNode; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.network.node.exporter.ExporterTransferStrategy; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; import com.refinedmods.refinedstorage.api.resource.ResourceKey; import com.refinedmods.refinedstorage.common.Platform; import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; @@ -14,7 +14,13 @@ import com.refinedmods.refinedstorage.common.content.Items; import com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock; import com.refinedmods.refinedstorage.common.support.BlockEntityWithDrops; -import com.refinedmods.refinedstorage.common.support.network.AbstractSchedulingNetworkNodeContainerBlockEntity; +import com.refinedmods.refinedstorage.common.support.FilterWithFuzzyMode; +import com.refinedmods.refinedstorage.common.support.SchedulingModeContainer; +import com.refinedmods.refinedstorage.common.support.SchedulingModeType; +import com.refinedmods.refinedstorage.common.support.containermenu.NetworkNodeExtendedMenuProvider; +import com.refinedmods.refinedstorage.common.support.network.BaseNetworkNodeContainerBlockEntity; +import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; +import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerImpl; import com.refinedmods.refinedstorage.common.upgrade.UpgradeContainer; import com.refinedmods.refinedstorage.common.upgrade.UpgradeDestinations; import com.refinedmods.refinedstorage.common.util.ContainerUtil; @@ -28,7 +34,9 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.network.codec.StreamEncoder; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -40,12 +48,14 @@ import org.slf4j.LoggerFactory; public class ExporterBlockEntity - extends AbstractSchedulingNetworkNodeContainerBlockEntity - implements AmountOverride, BlockEntityWithDrops { + extends BaseNetworkNodeContainerBlockEntity + implements AmountOverride, BlockEntityWithDrops, NetworkNodeExtendedMenuProvider { private static final Logger LOGGER = LoggerFactory.getLogger(ExporterBlockEntity.class); private static final String TAG_UPGRADES = "upgr"; private final UpgradeContainer upgradeContainer; + private final FilterWithFuzzyMode filter; + private final SchedulingModeContainer schedulingModeContainer; public ExporterBlockEntity(final BlockPos pos, final BlockState state) { super( @@ -63,6 +73,17 @@ public ExporterBlockEntity(final BlockPos pos, final BlockState state) { initialize(serverLevel); } }); + this.schedulingModeContainer = new SchedulingModeContainer(this::schedulingModeChanged); + this.filter = FilterWithFuzzyMode.createAndListenForFilters( + ResourceContainerImpl.createForFilter(), + this::setChanged, + this::setFilters + ); + } + + private void schedulingModeChanged(final SchedulingMode schedulingMode) { + mainNetworkNode.setSchedulingMode(schedulingMode); + setChanged(); } @Override @@ -121,6 +142,39 @@ public void loadAdditional(final CompoundTag tag, final HolderLookup.Provider pr super.loadAdditional(tag, provider); } + @Override + public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) { + super.writeConfiguration(tag, provider); + schedulingModeContainer.writeToTag(tag); + filter.save(tag, provider); + } + + @Override + public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) { + super.readConfiguration(tag, provider); + schedulingModeContainer.loadFromTag(tag); + filter.load(tag, provider); + } + + void setSchedulingModeType(final SchedulingModeType type) { + schedulingModeContainer.setType(type); + } + + SchedulingModeType getSchedulingModeType() { + return schedulingModeContainer.getType(); + } + + boolean isFuzzyMode() { + return filter.isFuzzyMode(); + } + + void setFuzzyMode(final boolean fuzzyMode) { + filter.setFuzzyMode(fuzzyMode); + if (level instanceof ServerLevel serverLevel) { + initialize(serverLevel); + } + } + @Override public final NonNullList getDrops() { return upgradeContainer.getDrops(); @@ -138,12 +192,16 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory invent } @Override - protected void setTaskExecutor(final TaskExecutor taskExecutor) { - mainNetworkNode.setTaskExecutor(taskExecutor); + public ResourceContainerData getMenuData() { + return ResourceContainerData.of(filter.getFilterContainer()); } @Override - protected void setFilters(final List filters) { + public StreamEncoder getMenuCodec() { + return ResourceContainerData.STREAM_CODEC; + } + + private void setFilters(final List filters) { mainNetworkNode.setFilters(filters); } @@ -172,6 +230,6 @@ private long getAmountStillNeeded(final long amount, final long currentAmount, f @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterContainerMenu.java index ed9714e9d..6cbf19962 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/exporter/ExporterContainerMenu.java @@ -2,7 +2,12 @@ import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; import com.refinedmods.refinedstorage.common.content.Menus; -import com.refinedmods.refinedstorage.common.support.containermenu.AbstractSchedulingContainerMenu; +import com.refinedmods.refinedstorage.common.support.RedstoneMode; +import com.refinedmods.refinedstorage.common.support.SchedulingModeType; +import com.refinedmods.refinedstorage.common.support.containermenu.AbstractSimpleFilterContainerMenu; +import com.refinedmods.refinedstorage.common.support.containermenu.ClientProperty; +import com.refinedmods.refinedstorage.common.support.containermenu.PropertyTypes; +import com.refinedmods.refinedstorage.common.support.containermenu.ServerProperty; import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; import com.refinedmods.refinedstorage.common.upgrade.UpgradeContainer; import com.refinedmods.refinedstorage.common.upgrade.UpgradeDestinations; @@ -13,7 +18,7 @@ import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; -public class ExporterContainerMenu extends AbstractSchedulingContainerMenu { +public class ExporterContainerMenu extends AbstractSimpleFilterContainerMenu { private static final MutableComponent FILTER_HELP = createTranslation("gui", "exporter.filter_help"); public ExporterContainerMenu(final int syncId, @@ -44,4 +49,30 @@ public ExporterContainerMenu(final int syncId, FILTER_HELP ); } + + @Override + protected void registerClientProperties() { + registerProperty(new ClientProperty<>(PropertyTypes.FUZZY_MODE, false)); + registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); + registerProperty(new ClientProperty<>(PropertyTypes.SCHEDULING_MODE, SchedulingModeType.DEFAULT)); + } + + @Override + protected void registerServerProperties(final ExporterBlockEntity blockEntity) { + registerProperty(new ServerProperty<>( + PropertyTypes.FUZZY_MODE, + blockEntity::isFuzzyMode, + blockEntity::setFuzzyMode + )); + registerProperty(new ServerProperty<>( + PropertyTypes.REDSTONE_MODE, + blockEntity::getRedstoneMode, + blockEntity::setRedstoneMode + )); + registerProperty(new ServerProperty<>( + PropertyTypes.SCHEDULING_MODE, + blockEntity::getSchedulingModeType, + blockEntity::setSchedulingModeType + )); + } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridBlockEntity.java index d70553b07..7686361ce 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/grid/AbstractGridBlockEntity.java @@ -86,6 +86,6 @@ public void removeWatcher(final GridWatcher watcher) { @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/importer/ImporterBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/importer/ImporterBlockEntity.java index fd91321a4..1f826890d 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/importer/ImporterBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/importer/ImporterBlockEntity.java @@ -222,6 +222,6 @@ private long getAmountStillAvailableForImport(final long amount, @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/networking/WirelessTransmitterBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/networking/WirelessTransmitterBlockEntity.java index 56cff9997..8208445ba 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/networking/WirelessTransmitterBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/networking/WirelessTransmitterBlockEntity.java @@ -120,7 +120,7 @@ public final NonNullList getDrops() { @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } boolean isActive() { diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/AbstractDiskContainerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/AbstractDiskContainerBlockEntity.java index 3933ff6ff..492d58068 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/AbstractDiskContainerBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/AbstractDiskContainerBlockEntity.java @@ -222,6 +222,6 @@ public StreamEncoder getMenuCode @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/externalstorage/ExternalStorageBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/externalstorage/ExternalStorageBlockEntity.java index 79f8ef941..6e08ed04f 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/externalstorage/ExternalStorageBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storage/externalstorage/ExternalStorageBlockEntity.java @@ -169,6 +169,6 @@ public AbstractContainerMenu createMenu(final int syncId, final Inventory invent @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storagemonitor/StorageMonitorBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storagemonitor/StorageMonitorBlockEntity.java index 3c072fdaa..56165e53a 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storagemonitor/StorageMonitorBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/storagemonitor/StorageMonitorBlockEntity.java @@ -335,6 +335,6 @@ private void sendDisplayUpdate(final Level level, final long amount, final boole @Override protected boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, final BlockState newBlockState) { - return AbstractDirectionalBlock.doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState); + return AbstractDirectionalBlock.didDirectionChange(oldBlockState, newBlockState); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractDirectionalBlock.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractDirectionalBlock.java index c1128fd88..d93d5f958 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractDirectionalBlock.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/AbstractDirectionalBlock.java @@ -74,8 +74,7 @@ public BlockState rotated(final T direction) { return defaultBlockState().setValue(getDirectionType().getProperty(), direction); } - public static boolean doesBlockStateChangeWarrantNetworkNodeUpdate(final BlockState oldBlockState, - final BlockState newBlockState) { + public static boolean didDirectionChange(final BlockState oldBlockState, final BlockState newBlockState) { if (!(newBlockState.getBlock() instanceof AbstractDirectionalBlock newDirectionalBlock)) { return true; } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingMode.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingMode.java deleted file mode 100644 index 55e7aa2a8..000000000 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingMode.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.refinedmods.refinedstorage.common.support; - -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; - -import java.util.Collections; -import java.util.Random; -import java.util.function.Consumer; -import javax.annotation.Nullable; - -import net.minecraft.nbt.CompoundTag; - -public final class SchedulingMode { - private static final String TAG_SCHEDULING_MODE = "sm"; - - private SchedulingModeType type; - @Nullable - private TaskExecutor taskExecutor; - - private final Runnable listener; - private final Consumer> taskExecutorAcceptor; - - public SchedulingMode(final Runnable listener, final Consumer> taskExecutorAcceptor) { - this.listener = listener; - this.taskExecutorAcceptor = taskExecutorAcceptor; - this.type = SchedulingModeType.DEFAULT; - this.setTaskExecutor(createTaskExecutor(null, type, listener)); - } - - public SchedulingModeType getType() { - return type; - } - - public void setType(final SchedulingModeType type) { - setType(null, type); - listener.run(); - } - - private void setType(@Nullable final CompoundTag tag, final SchedulingModeType newType) { - this.type = newType; - this.setTaskExecutor(createTaskExecutor(tag, newType, listener)); - } - - private void setTaskExecutor(final TaskExecutor taskExecutor) { - this.taskExecutor = taskExecutor; - taskExecutorAcceptor.accept(taskExecutor); - } - - private static TaskExecutor createTaskExecutor( - @Nullable final CompoundTag tag, - final SchedulingModeType type, - final Runnable listener - ) { - return type.createTaskExecutor(tag, list -> Collections.shuffle(list, new Random()), listener); - } - - public void load(final CompoundTag tag) { - if (tag.contains(TAG_SCHEDULING_MODE)) { - setType(tag, SchedulingModeType.getById(tag.getInt(TAG_SCHEDULING_MODE))); - } - } - - public void writeToTag(final CompoundTag tag) { - tag.putInt(TAG_SCHEDULING_MODE, type.getId()); - if (taskExecutor != null) { - type.writeToTag(tag, taskExecutor); - } - } -} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeContainer.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeContainer.java new file mode 100644 index 000000000..e2ad8a1ec --- /dev/null +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeContainer.java @@ -0,0 +1,67 @@ +package com.refinedmods.refinedstorage.common.support; + +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; + +import java.util.Collections; +import java.util.List; +import java.util.Random; +import java.util.function.Consumer; +import javax.annotation.Nullable; + +import net.minecraft.nbt.CompoundTag; + +public class SchedulingModeContainer { + private static final String TAG_SCHEDULING_MODE = "sm"; + + private final Consumer listener; + + private SchedulingModeType type; + private SchedulingMode schedulingMode; + + public SchedulingModeContainer(final Consumer listener) { + this.listener = listener; + this.type = SchedulingModeType.DEFAULT; + this.schedulingMode = type.createSchedulingMode( + null, + tasks -> Collections.shuffle(tasks, new Random()), + this::notifyListener + ); + } + + public SchedulingModeType getType() { + return type; + } + + public void setType(final SchedulingModeType type) { + setType(null, type); + } + + private void setType(@Nullable final CompoundTag tag, final SchedulingModeType newType) { + this.type = newType; + this.schedulingMode = newType.createSchedulingMode( + tag, + tasks -> Collections.shuffle(tasks, new Random()), + this::notifyListener + ); + notifyListener(); + } + + private void notifyListener() { + listener.accept(schedulingMode); + } + + public void loadFromTag(final CompoundTag tag) { + if (tag.contains(TAG_SCHEDULING_MODE)) { + setType(tag, SchedulingModeType.getById(tag.getInt(TAG_SCHEDULING_MODE))); + } + } + + public void writeToTag(final CompoundTag tag) { + tag.putInt(TAG_SCHEDULING_MODE, type.getId()); + type.writeToTag(tag, schedulingMode); + } + + public void execute(final List tasks) { + schedulingMode.execute(tasks); + } +} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeType.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeType.java index 3f85ed1e0..d6f0a4f61 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeType.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/SchedulingModeType.java @@ -1,9 +1,9 @@ package com.refinedmods.refinedstorage.common.support; -import com.refinedmods.refinedstorage.api.network.impl.node.task.DefaultTaskExecutor; -import com.refinedmods.refinedstorage.api.network.impl.node.task.RandomTaskExecutor; -import com.refinedmods.refinedstorage.api.network.impl.node.task.RoundRobinTaskExecutor; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; +import com.refinedmods.refinedstorage.api.network.impl.node.task.DefaultSchedulingMode; +import com.refinedmods.refinedstorage.api.network.impl.node.task.RandomSchedulingMode; +import com.refinedmods.refinedstorage.api.network.impl.node.task.RoundRobinSchedulingMode; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import javax.annotation.Nullable; @@ -14,21 +14,9 @@ import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createTranslation; public enum SchedulingModeType { - DEFAULT( - 0, - createTranslation("gui", "scheduling_mode.default"), - createTranslation("gui", "scheduling_mode.default.help") - ), - ROUND_ROBIN( - 1, - createTranslation("gui", "scheduling_mode.round_robin"), - createTranslation("gui", "scheduling_mode.round_robin.help") - ), - RANDOM( - 2, - createTranslation("gui", "scheduling_mode.random"), - createTranslation("gui", "scheduling_mode.random.help") - ); + DEFAULT(0, "default"), + ROUND_ROBIN(1, "round_robin"), + RANDOM(2, "random"); private static final String TAG_ROUND_ROBIN_INDEX = "rri"; @@ -36,10 +24,10 @@ public enum SchedulingModeType { private final MutableComponent name; private final Component help; - SchedulingModeType(final int id, final MutableComponent name, final MutableComponent help) { + SchedulingModeType(final int id, final String name) { this.id = id; - this.name = name; - this.help = help; + this.name = createTranslation("gui", "scheduling_mode." + name); + this.help = createTranslation("gui", "scheduling_mode." + name + ".help"); } public static SchedulingModeType getById(final int id) { @@ -63,27 +51,24 @@ public int getId() { return id; } - public TaskExecutor createTaskExecutor(@Nullable final CompoundTag tag, - final RandomTaskExecutor.Randomizer randomizer, - final Runnable dirtyCallback) { + public SchedulingMode createSchedulingMode(@Nullable final CompoundTag tag, + final RandomSchedulingMode.Randomizer randomizer, + final Runnable listener) { return switch (this) { - case DEFAULT -> new DefaultTaskExecutor<>(); - case RANDOM -> new RandomTaskExecutor<>(randomizer); - case ROUND_ROBIN -> createRoundRobinExecutor(tag, dirtyCallback); + case DEFAULT -> new DefaultSchedulingMode(); + case RANDOM -> new RandomSchedulingMode(randomizer); + case ROUND_ROBIN -> createRoundRobinSchedulingMode(tag, listener); }; } - private RoundRobinTaskExecutor createRoundRobinExecutor(@Nullable final CompoundTag tag, - final Runnable dirtyCallback) { + private RoundRobinSchedulingMode createRoundRobinSchedulingMode(@Nullable final CompoundTag tag, + final Runnable listener) { final int index = tag != null ? tag.getInt(TAG_ROUND_ROBIN_INDEX) : 0; - return new RoundRobinTaskExecutor<>(new RoundRobinTaskExecutor.State( - dirtyCallback, - index - )); + return new RoundRobinSchedulingMode(new RoundRobinSchedulingMode.State(listener, index)); } - public void writeToTag(final CompoundTag tag, final TaskExecutor taskExecutor) { - if (taskExecutor instanceof RoundRobinTaskExecutor roundRobin) { + public void writeToTag(final CompoundTag tag, final SchedulingMode schedulingMode) { + if (schedulingMode instanceof RoundRobinSchedulingMode roundRobin) { tag.putInt(TAG_ROUND_ROBIN_INDEX, roundRobin.getIndex()); } } diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSchedulingContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSchedulingContainerMenu.java deleted file mode 100644 index 117a0a456..000000000 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSchedulingContainerMenu.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.refinedmods.refinedstorage.common.support.containermenu; - -import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer; -import com.refinedmods.refinedstorage.common.support.RedstoneMode; -import com.refinedmods.refinedstorage.common.support.SchedulingModeType; -import com.refinedmods.refinedstorage.common.support.network.AbstractSchedulingNetworkNodeContainerBlockEntity; -import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; -import com.refinedmods.refinedstorage.common.upgrade.UpgradeContainer; -import com.refinedmods.refinedstorage.common.upgrade.UpgradeDestinations; - -import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.MenuType; - -public abstract class AbstractSchedulingContainerMenu> - extends AbstractSimpleFilterContainerMenu { - protected AbstractSchedulingContainerMenu(final MenuType type, - final int syncId, - final Player player, - final ResourceContainer resourceContainer, - final UpgradeContainer upgradeContainer, - final T blockEntity, - final Component filterHelp) { - super(type, syncId, player, resourceContainer, upgradeContainer, blockEntity, filterHelp); - } - - protected AbstractSchedulingContainerMenu(final MenuType type, - final int syncId, - final Player player, - final ResourceContainerData resourceContainerData, - final UpgradeDestinations upgradeDestination, - final Component filterHelp) { - super(type, syncId, player, resourceContainerData, upgradeDestination, filterHelp); - } - - @Override - protected void registerClientProperties() { - registerProperty(new ClientProperty<>(PropertyTypes.FUZZY_MODE, false)); - registerProperty(new ClientProperty<>(PropertyTypes.REDSTONE_MODE, RedstoneMode.IGNORE)); - registerProperty(new ClientProperty<>(PropertyTypes.SCHEDULING_MODE, SchedulingModeType.DEFAULT)); - } - - @Override - protected void registerServerProperties(final T blockEntity) { - registerProperty(new ServerProperty<>( - PropertyTypes.FUZZY_MODE, - blockEntity::isFuzzyMode, - blockEntity::setFuzzyMode - )); - registerProperty(new ServerProperty<>( - PropertyTypes.REDSTONE_MODE, - blockEntity::getRedstoneMode, - blockEntity::setRedstoneMode - )); - registerProperty(new ServerProperty<>( - PropertyTypes.SCHEDULING_MODE, - blockEntity::getSchedulingModeType, - blockEntity::setSchedulingModeType - )); - } -} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSimpleFilterContainerMenu.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSimpleFilterContainerMenu.java index 7dc700b44..959409590 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSimpleFilterContainerMenu.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/containermenu/AbstractSimpleFilterContainerMenu.java @@ -15,8 +15,7 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.level.block.entity.BlockEntity; -public abstract class AbstractSimpleFilterContainerMenu - extends AbstractResourceContainerMenu { +public abstract class AbstractSimpleFilterContainerMenu extends AbstractResourceContainerMenu { private static final int FILTER_SLOT_X = 8; private static final int FILTER_SLOT_Y = 20; diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/AbstractSchedulingNetworkNodeContainerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/AbstractSchedulingNetworkNodeContainerBlockEntity.java deleted file mode 100644 index 6303abff4..000000000 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/AbstractSchedulingNetworkNodeContainerBlockEntity.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.refinedmods.refinedstorage.common.support.network; - -import com.refinedmods.refinedstorage.api.network.impl.node.AbstractNetworkNode; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; -import com.refinedmods.refinedstorage.api.resource.ResourceKey; -import com.refinedmods.refinedstorage.common.support.FilterWithFuzzyMode; -import com.refinedmods.refinedstorage.common.support.SchedulingMode; -import com.refinedmods.refinedstorage.common.support.SchedulingModeType; -import com.refinedmods.refinedstorage.common.support.containermenu.NetworkNodeExtendedMenuProvider; -import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerData; -import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerImpl; - -import java.util.List; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.HolderLookup; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamEncoder; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -public abstract class AbstractSchedulingNetworkNodeContainerBlockEntity - extends BaseNetworkNodeContainerBlockEntity - implements NetworkNodeExtendedMenuProvider { - protected final FilterWithFuzzyMode filter; - private final SchedulingMode schedulingMode; - - protected AbstractSchedulingNetworkNodeContainerBlockEntity( - final BlockEntityType type, - final BlockPos pos, - final BlockState state, - final T node - ) { - super(type, pos, state, node); - this.schedulingMode = new SchedulingMode<>(this::setChanged, this::setTaskExecutor); - this.filter = FilterWithFuzzyMode.createAndListenForFilters( - ResourceContainerImpl.createForFilter(), - this::setChanged, - this::setFilters - ); - } - - @Override - public void writeConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) { - super.writeConfiguration(tag, provider); - schedulingMode.writeToTag(tag); - filter.save(tag, provider); - } - - @Override - public void readConfiguration(final CompoundTag tag, final HolderLookup.Provider provider) { - super.readConfiguration(tag, provider); - schedulingMode.load(tag); - filter.load(tag, provider); - } - - public void setSchedulingModeType(final SchedulingModeType type) { - schedulingMode.setType(type); - } - - public SchedulingModeType getSchedulingModeType() { - return schedulingMode.getType(); - } - - public boolean isFuzzyMode() { - return filter.isFuzzyMode(); - } - - public void setFuzzyMode(final boolean fuzzyMode) { - filter.setFuzzyMode(fuzzyMode); - if (level instanceof ServerLevel serverLevel) { - initialize(serverLevel); - } - } - - @Override - public ResourceContainerData getMenuData() { - return ResourceContainerData.of(filter.getFilterContainer()); - } - - @Override - public StreamEncoder getMenuCodec() { - return ResourceContainerData.STREAM_CODEC; - } - - protected abstract void setTaskExecutor(TaskExecutor taskExecutor); - - protected abstract void setFilters(List filters); -} diff --git a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/BaseNetworkNodeContainerBlockEntity.java b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/BaseNetworkNodeContainerBlockEntity.java index c9c380e35..4fadedee6 100644 --- a/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/BaseNetworkNodeContainerBlockEntity.java +++ b/refinedstorage-common/src/main/java/com/refinedmods/refinedstorage/common/support/network/BaseNetworkNodeContainerBlockEntity.java @@ -160,10 +160,9 @@ public void setBlockState(final BlockState newBlockState) { if (level instanceof ServerLevel serverLevel) { initialize(serverLevel); } - if (!doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState)) { - return; + if (doesBlockStateChangeWarrantNetworkNodeUpdate(oldBlockState, newBlockState)) { + containers.update(level); } - containers.update(level); } @Override diff --git a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/SchedulingMode.java b/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/SchedulingMode.java new file mode 100644 index 000000000..bdc0b518a --- /dev/null +++ b/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/SchedulingMode.java @@ -0,0 +1,16 @@ +package com.refinedmods.refinedstorage.api.network.node; + +import java.util.List; + +import org.apiguardian.api.API; + +@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.11") +@FunctionalInterface +public interface SchedulingMode { + void execute(List tasks); + + @FunctionalInterface + interface ScheduledTask { + boolean run(); + } +} diff --git a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/Task.java b/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/Task.java deleted file mode 100644 index 2812ed456..000000000 --- a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/Task.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.refinedmods.refinedstorage.api.network.node.task; - -import org.apiguardian.api.API; - -@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.11") -@FunctionalInterface -public interface Task { - boolean run(C context); -} diff --git a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/TaskExecutor.java b/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/TaskExecutor.java deleted file mode 100644 index f29d55b0f..000000000 --- a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/TaskExecutor.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.refinedmods.refinedstorage.api.network.node.task; - -import java.util.List; - -import org.apiguardian.api.API; - -@API(status = API.Status.STABLE, since = "2.0.0-milestone.2.11") -@FunctionalInterface -public interface TaskExecutor { - void execute(List> tasks, C context); -} diff --git a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/package-info.java b/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/package-info.java deleted file mode 100644 index 4499b3e43..000000000 --- a/refinedstorage-network-api/src/main/java/com/refinedmods/refinedstorage/api/network/node/task/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -@ParametersAreNonnullByDefault -@FieldsAndMethodsAreNonnullByDefault -package com.refinedmods.refinedstorage.api.network.node.task; - -import com.refinedmods.refinedstorage.api.core.FieldsAndMethodsAreNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/ExporterNetworkNode.java b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/ExporterNetworkNode.java index b6ade059f..50f1b7e16 100644 --- a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/ExporterNetworkNode.java +++ b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/ExporterNetworkNode.java @@ -1,11 +1,9 @@ package com.refinedmods.refinedstorage.api.network.impl.node.exporter; -import com.refinedmods.refinedstorage.api.network.Network; import com.refinedmods.refinedstorage.api.network.impl.node.AbstractNetworkNode; import com.refinedmods.refinedstorage.api.network.node.NetworkNodeActor; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.network.node.exporter.ExporterTransferStrategy; -import com.refinedmods.refinedstorage.api.network.node.task.Task; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; import com.refinedmods.refinedstorage.api.resource.ResourceKey; import com.refinedmods.refinedstorage.api.storage.Actor; @@ -16,11 +14,11 @@ public class ExporterNetworkNode extends AbstractNetworkNode { private long energyUsage; private final Actor actor = new NetworkNodeActor(this); - private final List tasks = new ArrayList<>(); + private final List tasks = new ArrayList<>(); @Nullable private ExporterTransferStrategy transferStrategy; @Nullable - private TaskExecutor taskExecutor; + private SchedulingMode schedulingMode; public ExporterNetworkNode(final long energyUsage) { this.energyUsage = energyUsage; @@ -30,23 +28,22 @@ public void setTransferStrategy(@Nullable final ExporterTransferStrategy transfe this.transferStrategy = transferStrategy; } - public void setTaskExecutor(@Nullable final TaskExecutor taskExecutor) { - this.taskExecutor = taskExecutor; + public void setSchedulingMode(@Nullable final SchedulingMode schedulingMode) { + this.schedulingMode = schedulingMode; } @Override public void doWork() { super.doWork(); - if (network == null || !isActive() || taskExecutor == null) { + if (network == null || !isActive() || schedulingMode == null) { return; } - final TaskContext context = new TaskContext(network, actor); - taskExecutor.execute(tasks, context); + schedulingMode.execute(tasks); } public void setFilters(final List filters) { tasks.clear(); - tasks.addAll(filters.stream().map(TaskImpl::new).toList()); + tasks.addAll(filters.stream().map(ExporterTask::new).toList()); } public void setEnergyUsage(final long energyUsage) { @@ -58,22 +55,19 @@ public long getEnergyUsage() { return energyUsage; } - public record TaskContext(Network network, Actor actor) { - } - - class TaskImpl implements Task { + class ExporterTask implements SchedulingMode.ScheduledTask { private final ResourceKey filter; - TaskImpl(final ResourceKey filter) { + ExporterTask(final ResourceKey filter) { this.filter = filter; } @Override - public boolean run(final TaskContext context) { - if (transferStrategy == null) { + public boolean run() { + if (transferStrategy == null || network == null) { return false; } - return transferStrategy.transfer(filter, context.actor, context.network); + return transferStrategy.transfer(filter, actor, network); } } } diff --git a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultSchedulingMode.java b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultSchedulingMode.java new file mode 100644 index 000000000..afb44d8e2 --- /dev/null +++ b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultSchedulingMode.java @@ -0,0 +1,16 @@ +package com.refinedmods.refinedstorage.api.network.impl.node.task; + +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; + +import java.util.List; + +public class DefaultSchedulingMode implements SchedulingMode { + @Override + public void execute(final List tasks) { + for (final ScheduledTask task : tasks) { + if (task.run()) { + return; + } + } + } +} diff --git a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultTaskExecutor.java b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultTaskExecutor.java deleted file mode 100644 index 111857b52..000000000 --- a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/DefaultTaskExecutor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.refinedmods.refinedstorage.api.network.impl.node.task; - -import com.refinedmods.refinedstorage.api.network.node.task.Task; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; - -import java.util.List; - -public class DefaultTaskExecutor implements TaskExecutor { - @Override - public void execute(final List> tasks, final C context) { - for (final Task task : tasks) { - if (task.run(context)) { - return; - } - } - } -} diff --git a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomSchedulingMode.java b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomSchedulingMode.java new file mode 100644 index 000000000..eedae4c81 --- /dev/null +++ b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomSchedulingMode.java @@ -0,0 +1,32 @@ +package com.refinedmods.refinedstorage.api.network.impl.node.task; + +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; + +import java.util.ArrayList; +import java.util.List; + +public class RandomSchedulingMode implements SchedulingMode { + private final Randomizer randomizer; + + public RandomSchedulingMode(final Randomizer randomizer) { + this.randomizer = randomizer; + } + + @Override + public void execute(final List tasks) { + if (tasks.isEmpty()) { + return; + } + final List shuffledTasks = new ArrayList<>(tasks); + randomizer.shuffle(shuffledTasks); + for (final ScheduledTask task : shuffledTasks) { + if (task.run()) { + return; + } + } + } + + public interface Randomizer { + void shuffle(List list); + } +} diff --git a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomTaskExecutor.java b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomTaskExecutor.java deleted file mode 100644 index 1b8e8aff3..000000000 --- a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RandomTaskExecutor.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.refinedmods.refinedstorage.api.network.impl.node.task; - -import com.refinedmods.refinedstorage.api.network.node.task.Task; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; - -import java.util.ArrayList; -import java.util.List; - -public class RandomTaskExecutor implements TaskExecutor { - private final Randomizer randomizer; - - public RandomTaskExecutor(final Randomizer randomizer) { - this.randomizer = randomizer; - } - - @Override - public void execute(final List> tasks, final C context) { - if (tasks.isEmpty()) { - return; - } - final List> shuffledTasks = new ArrayList<>(tasks); - randomizer.shuffle(shuffledTasks); - for (final Task task : shuffledTasks) { - if (task.run(context)) { - return; - } - } - } - - public interface Randomizer { - void shuffle(List> list); - } -} diff --git a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RoundRobinTaskExecutor.java b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RoundRobinSchedulingMode.java similarity index 72% rename from refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RoundRobinTaskExecutor.java rename to refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RoundRobinSchedulingMode.java index ee10f89b7..ad75e97a6 100644 --- a/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RoundRobinTaskExecutor.java +++ b/refinedstorage-network/src/main/java/com/refinedmods/refinedstorage/api/network/impl/node/task/RoundRobinSchedulingMode.java @@ -1,26 +1,25 @@ package com.refinedmods.refinedstorage.api.network.impl.node.task; -import com.refinedmods.refinedstorage.api.network.node.task.Task; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import java.util.List; -public class RoundRobinTaskExecutor implements TaskExecutor { +public class RoundRobinSchedulingMode implements SchedulingMode { private final State state; - public RoundRobinTaskExecutor(final State state) { + public RoundRobinSchedulingMode(final State state) { this.state = state; } @Override - public void execute(final List> tasks, final C context) { + public void execute(final List tasks) { if (tasks.isEmpty()) { return; } final int startIndex = state.getIndex() % tasks.size(); for (int i = startIndex; i < tasks.size(); ++i) { - final Task task = tasks.get(i); - if (task.run(context)) { + final ScheduledTask task = tasks.get(i); + if (task.run()) { state.setIndex((state.getIndex() + 1) % tasks.size()); return; } diff --git a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java index 6d82477d0..56b3b2b6c 100644 --- a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java +++ b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/AbstractExporterNetworkNodeTest.java @@ -2,8 +2,8 @@ import com.refinedmods.refinedstorage.api.core.Action; import com.refinedmods.refinedstorage.api.network.energy.EnergyNetworkComponent; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.network.node.exporter.ExporterTransferStrategy; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; import com.refinedmods.refinedstorage.api.network.storage.StorageNetworkComponent; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.resource.ResourceKey; @@ -39,12 +39,12 @@ abstract class AbstractExporterNetworkNodeTest { @AddNetworkNode(networkId = "nonexistent") ExporterNetworkNode sutWithoutNetwork; - protected abstract TaskExecutor createTaskExecutor(); + protected abstract SchedulingMode createSchedulingMode(); @BeforeEach void setUp() { sut.setEnergyUsage(5); - sut.setTaskExecutor(createTaskExecutor()); + sut.setSchedulingMode(createSchedulingMode()); } @Test @@ -153,7 +153,7 @@ void shouldNotTransferWithoutTaskExecutor( sut.setFilters(List.of(A, B)); sut.setTransferStrategy(createTransferStrategy(destination, 1)); - sut.setTaskExecutor(null); + sut.setSchedulingMode(null); // Act sut.doWork(); diff --git a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/FirstAvailableExporterNetworkNodeTest.java b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/DefaultExporterNetworkNodeTest.java similarity index 94% rename from refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/FirstAvailableExporterNetworkNodeTest.java rename to refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/DefaultExporterNetworkNodeTest.java index db9bf6b7f..aefed2b8b 100644 --- a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/FirstAvailableExporterNetworkNodeTest.java +++ b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/DefaultExporterNetworkNodeTest.java @@ -1,10 +1,10 @@ package com.refinedmods.refinedstorage.api.network.impl.node.exporter; import com.refinedmods.refinedstorage.api.core.Action; -import com.refinedmods.refinedstorage.api.network.impl.node.task.DefaultTaskExecutor; +import com.refinedmods.refinedstorage.api.network.impl.node.task.DefaultSchedulingMode; import com.refinedmods.refinedstorage.api.network.node.NetworkNodeActor; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.network.node.exporter.ExporterTransferStrategy; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; import com.refinedmods.refinedstorage.api.network.storage.StorageNetworkComponent; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.resource.ResourceKey; @@ -25,10 +25,10 @@ import static com.refinedmods.refinedstorage.network.test.fake.FakeResources.C; import static org.assertj.core.api.Assertions.assertThat; -class FirstAvailableExporterNetworkNodeTest extends AbstractExporterNetworkNodeTest { +class DefaultExporterNetworkNodeTest extends AbstractExporterNetworkNodeTest { @Override - protected TaskExecutor createTaskExecutor() { - return new DefaultTaskExecutor<>(); + protected SchedulingMode createSchedulingMode() { + return new DefaultSchedulingMode(); } @SuppressWarnings("AssertBetweenInconvertibleTypes") // intellij bug diff --git a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RandomExporterNetworkNodeTest.java b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RandomExporterNetworkNodeTest.java index e357f7218..e83190d85 100644 --- a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RandomExporterNetworkNodeTest.java +++ b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RandomExporterNetworkNodeTest.java @@ -1,9 +1,9 @@ package com.refinedmods.refinedstorage.api.network.impl.node.exporter; import com.refinedmods.refinedstorage.api.core.Action; -import com.refinedmods.refinedstorage.api.network.impl.node.task.RandomTaskExecutor; +import com.refinedmods.refinedstorage.api.network.impl.node.task.RandomSchedulingMode; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.network.node.exporter.ExporterTransferStrategy; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; import com.refinedmods.refinedstorage.api.network.storage.StorageNetworkComponent; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.storage.EmptyActor; @@ -21,11 +21,11 @@ class RandomExporterNetworkNodeTest extends AbstractExporterNetworkNodeTest { @Override - protected TaskExecutor createTaskExecutor() { - return new RandomTaskExecutor<>(list -> { + protected SchedulingMode createSchedulingMode() { + return new RandomSchedulingMode(list -> { list.clear(); - list.add(sut.new TaskImpl(A)); - list.add(sut.new TaskImpl(B)); + list.add(sut.new ExporterTask(A)); + list.add(sut.new ExporterTask(B)); }); } diff --git a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RoundRobinExporterNetworkNodeTest.java b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RoundRobinExporterNetworkNodeTest.java index 5dbdb29c3..30c056623 100644 --- a/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RoundRobinExporterNetworkNodeTest.java +++ b/refinedstorage-network/src/test/java/com/refinedmods/refinedstorage/api/network/impl/node/exporter/RoundRobinExporterNetworkNodeTest.java @@ -1,9 +1,9 @@ package com.refinedmods.refinedstorage.api.network.impl.node.exporter; import com.refinedmods.refinedstorage.api.core.Action; -import com.refinedmods.refinedstorage.api.network.impl.node.task.RoundRobinTaskExecutor; +import com.refinedmods.refinedstorage.api.network.impl.node.task.RoundRobinSchedulingMode; +import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; import com.refinedmods.refinedstorage.api.network.node.exporter.ExporterTransferStrategy; -import com.refinedmods.refinedstorage.api.network.node.task.TaskExecutor; import com.refinedmods.refinedstorage.api.network.storage.StorageNetworkComponent; import com.refinedmods.refinedstorage.api.resource.ResourceAmount; import com.refinedmods.refinedstorage.api.storage.EmptyActor; @@ -37,8 +37,8 @@ void setUp() { } @Override - protected TaskExecutor createTaskExecutor() { - return new RoundRobinTaskExecutor<>(new RoundRobinTaskExecutor.State(listener, 0)); + protected SchedulingMode createSchedulingMode() { + return new RoundRobinSchedulingMode(new RoundRobinSchedulingMode.State(listener, 0)); } @Test