调整文档结构
This commit is contained in:
parent
e1bd547590
commit
5609777360
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.content;
|
||||
package com.extendedae_plus.ae.api.crafting;
|
||||
|
||||
import appeng.api.crafting.IPatternDetails;
|
||||
import appeng.api.stacks.AEItemKey;
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.extendedae_plus;
|
||||
package com.extendedae_plus.ae.client.gui;
|
||||
|
||||
import appeng.client.gui.style.Blitter;
|
||||
import com.extendedae_plus.ExtendedAEPlus;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
public class NewIcon {
|
||||
|
|
@ -9,8 +9,8 @@ import com.extendedae_plus.ae.screen.EntitySpeedTickerScreen;
|
|||
import com.extendedae_plus.config.ModConfig;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.init.ModMenuTypes;
|
||||
import com.extendedae_plus.util.ConfigParsingUtils;
|
||||
import com.extendedae_plus.util.PowerUtils;
|
||||
import com.extendedae_plus.util.entitySpeed.ConfigParsingUtils;
|
||||
import com.extendedae_plus.util.entitySpeed.PowerUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu;
|
|||
import com.extendedae_plus.config.ModConfig;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.init.ModMenuTypes;
|
||||
import com.extendedae_plus.util.ConfigParsingUtils;
|
||||
import com.extendedae_plus.util.PowerUtils;
|
||||
import com.extendedae_plus.util.entitySpeed.ConfigParsingUtils;
|
||||
import com.extendedae_plus.util.entitySpeed.PowerUtils;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import appeng.util.Platform;
|
|||
import com.extendedae_plus.ae.menu.EntitySpeedTickerMenu;
|
||||
import com.extendedae_plus.init.ModNetwork;
|
||||
import com.extendedae_plus.network.ToggleEntityTickerC2SPacket;
|
||||
import com.extendedae_plus.util.PowerUtils;
|
||||
import com.extendedae_plus.util.entitySpeed.PowerUtils;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.player.Inventory;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.wireless;
|
||||
package com.extendedae_plus.ae.wireless;
|
||||
|
||||
import appeng.api.networking.IGridNode;
|
||||
import net.minecraft.core.BlockPos;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.wireless;
|
||||
package com.extendedae_plus.ae.wireless;
|
||||
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.wireless;
|
||||
package com.extendedae_plus.ae.wireless;
|
||||
|
||||
import com.extendedae_plus.config.ModConfig;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.wireless;
|
||||
package com.extendedae_plus.ae.wireless;
|
||||
|
||||
import appeng.api.networking.GridHelper;
|
||||
import appeng.api.networking.IGridNode;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package com.extendedae_plus.wireless.endpoint;
|
||||
package com.extendedae_plus.ae.wireless.endpoint;
|
||||
|
||||
import appeng.api.networking.IGridNode;
|
||||
import com.extendedae_plus.wireless.IWirelessEndpoint;
|
||||
import com.extendedae_plus.ae.wireless.IWirelessEndpoint;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.extendedae_plus.wireless.endpoint;
|
||||
package com.extendedae_plus.ae.wireless.endpoint;
|
||||
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.helpers.InterfaceLogicHost;
|
||||
import com.extendedae_plus.wireless.IWirelessEndpoint;
|
||||
import com.extendedae_plus.ae.wireless.IWirelessEndpoint;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.level.Level;
|
||||
|
|
@ -3,11 +3,11 @@ package com.extendedae_plus.content.wireless;
|
|||
import appeng.api.networking.*;
|
||||
import appeng.api.util.AECableType;
|
||||
import appeng.blockentity.AEBaseBlockEntity;
|
||||
import com.extendedae_plus.ae.wireless.IWirelessEndpoint;
|
||||
import com.extendedae_plus.ae.wireless.WirelessMasterLink;
|
||||
import com.extendedae_plus.ae.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.init.ModBlockEntities;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.wireless.IWirelessEndpoint;
|
||||
import com.extendedae_plus.wireless.WirelessMasterLink;
|
||||
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ package com.extendedae_plus.integration.jade;
|
|||
|
||||
import appeng.api.networking.IGrid;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import com.extendedae_plus.ae.wireless.IWirelessEndpoint;
|
||||
import com.extendedae_plus.ae.wireless.WirelessMasterRegistry;
|
||||
import com.extendedae_plus.content.wireless.WirelessTransceiverBlockEntity;
|
||||
import com.extendedae_plus.wireless.IWirelessEndpoint;
|
||||
import com.extendedae_plus.wireless.WirelessMasterRegistry;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.extendedae_plus.mixin.advancedae;
|
||||
|
||||
import appeng.api.crafting.IPatternDetails;
|
||||
import com.extendedae_plus.content.ScaledProcessingPattern;
|
||||
import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern;
|
||||
import net.pedroksl.advanced_ae.common.logic.AdvPatternProviderLogic;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package com.extendedae_plus.mixin.ae2.autopattern;
|
|||
|
||||
import appeng.api.crafting.IPatternDetails;
|
||||
import appeng.me.service.CraftingService;
|
||||
import com.extendedae_plus.content.ScaledProcessingPattern;
|
||||
import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.extendedae_plus.mixin.ae2.autopattern;
|
|||
import appeng.api.stacks.KeyCounter;
|
||||
import appeng.crafting.CraftingTreeNode;
|
||||
import appeng.crafting.inv.CraftingSimulationState;
|
||||
import com.extendedae_plus.util.RequestedAmountHolder;
|
||||
import com.extendedae_plus.util.smartDoubling.RequestedAmountHolder;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
|
|
|
|||
|
|
@ -9,11 +9,11 @@ import appeng.crafting.CraftingTreeNode;
|
|||
import appeng.crafting.CraftingTreeProcess;
|
||||
import appeng.crafting.pattern.AEProcessingPattern;
|
||||
import appeng.me.service.CraftingService;
|
||||
import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern;
|
||||
import com.extendedae_plus.api.smartDoubling.ISmartDoublingAwarePattern;
|
||||
import com.extendedae_plus.config.ModConfig;
|
||||
import com.extendedae_plus.content.ScaledProcessingPattern;
|
||||
import com.extendedae_plus.util.PatternScaler;
|
||||
import com.extendedae_plus.util.RequestedAmountHolder;
|
||||
import com.extendedae_plus.util.smartDoubling.PatternScaler;
|
||||
import com.extendedae_plus.util.smartDoubling.RequestedAmountHolder;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package com.extendedae_plus.mixin.ae2.autopattern;
|
|||
|
||||
import appeng.api.crafting.IPatternDetails;
|
||||
import appeng.helpers.patternprovider.PatternProviderLogic;
|
||||
import com.extendedae_plus.content.ScaledProcessingPattern;
|
||||
import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
|
|
|||
|
|
@ -3,17 +3,15 @@ package com.extendedae_plus.mixin.ae2.client.gui;
|
|||
import appeng.client.gui.AEBaseScreen;
|
||||
import appeng.client.gui.implementations.InterfaceScreen;
|
||||
import appeng.menu.AEBaseMenu;
|
||||
import com.extendedae_plus.NewIcon;
|
||||
import com.extendedae_plus.init.ModNetwork;
|
||||
import com.extendedae_plus.network.InterfaceAdjustConfigAmountC2SPacket;
|
||||
import appeng.menu.SlotSemantics;
|
||||
import net.minecraft.world.inventory.Slot;
|
||||
import com.extendedae_plus.ae.client.gui.NewIcon;
|
||||
import com.extendedae_plus.init.ModNetwork;
|
||||
import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor;
|
||||
import com.extendedae_plus.mixin.accessor.ScreenAccessor;
|
||||
import com.extendedae_plus.network.InterfaceAdjustConfigAmountC2SPacket;
|
||||
import com.glodblock.github.extendedae.client.button.ActionEPPButton;
|
||||
import net.minecraft.client.gui.components.Tooltip;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import com.mojang.logging.LogUtils;
|
||||
import net.minecraft.world.inventory.Slot;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@ import appeng.api.upgrades.UpgradeInventories;
|
|||
import appeng.helpers.patternprovider.PatternProviderLogic;
|
||||
import appeng.helpers.patternprovider.PatternProviderLogicHost;
|
||||
import com.extendedae_plus.ae.items.ChannelCardItem;
|
||||
import com.extendedae_plus.ae.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.ae.wireless.endpoint.GenericNodeEndpointImpl;
|
||||
import com.extendedae_plus.api.bridge.IInterfaceWirelessLinkBridge;
|
||||
import com.extendedae_plus.compat.UpgradeSlotCompat;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.wireless.endpoint.GenericNodeEndpointImpl;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ import appeng.api.upgrades.IUpgradeInventory;
|
|||
import appeng.helpers.InterfaceLogic;
|
||||
import appeng.helpers.InterfaceLogicHost;
|
||||
import com.extendedae_plus.ae.items.ChannelCardItem;
|
||||
import com.extendedae_plus.ae.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.ae.wireless.endpoint.InterfaceNodeEndpointImpl;
|
||||
import com.extendedae_plus.api.bridge.IInterfaceWirelessLinkBridge;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.wireless.endpoint.InterfaceNodeEndpointImpl;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ import appeng.api.upgrades.IUpgradeInventory;
|
|||
import appeng.api.upgrades.IUpgradeableObject;
|
||||
import appeng.parts.automation.IOBusPart;
|
||||
import com.extendedae_plus.ae.items.ChannelCardItem;
|
||||
import com.extendedae_plus.ae.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.ae.wireless.endpoint.GenericNodeEndpointImpl;
|
||||
import com.extendedae_plus.api.bridge.IInterfaceWirelessLinkBridge;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.util.ExtendedAELogger;
|
||||
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.wireless.endpoint.GenericNodeEndpointImpl;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ import appeng.api.upgrades.IUpgradeInventory;
|
|||
import appeng.api.upgrades.IUpgradeableObject;
|
||||
import appeng.parts.storagebus.StorageBusPart;
|
||||
import com.extendedae_plus.ae.items.ChannelCardItem;
|
||||
import com.extendedae_plus.ae.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.ae.wireless.endpoint.GenericNodeEndpointImpl;
|
||||
import com.extendedae_plus.api.bridge.IInterfaceWirelessLinkBridge;
|
||||
import com.extendedae_plus.init.ModItems;
|
||||
import com.extendedae_plus.util.ExtendedAELogger;
|
||||
import com.extendedae_plus.wireless.WirelessSlaveLink;
|
||||
import com.extendedae_plus.wireless.endpoint.GenericNodeEndpointImpl;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import appeng.client.gui.Icon;
|
|||
import appeng.client.gui.implementations.PatternProviderScreen;
|
||||
import appeng.client.gui.style.ScreenStyle;
|
||||
import appeng.menu.SlotSemantics;
|
||||
import com.extendedae_plus.NewIcon;
|
||||
import com.extendedae_plus.ae.client.gui.NewIcon;
|
||||
import com.extendedae_plus.api.IExPatternButtonsAccessor;
|
||||
import com.extendedae_plus.api.IExPatternPageAccessor;
|
||||
import com.extendedae_plus.config.ModConfig;
|
||||
|
|
|
|||
|
|
@ -1,127 +0,0 @@
|
|||
package com.extendedae_plus.util;
|
||||
|
||||
import appeng.client.gui.implementations.PatternProviderScreen;
|
||||
import appeng.helpers.patternprovider.PatternProviderLogic;
|
||||
import appeng.menu.implementations.PatternProviderMenu;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
|
||||
/**
|
||||
* 样板供应器UI辅助工具类
|
||||
* 用于在样板供应器界面中获取PatternProviderLogic对象
|
||||
*/
|
||||
public class PatternProviderUIHelper {
|
||||
|
||||
/**
|
||||
* 获取当前打开的样板供应器的PatternProviderLogic
|
||||
*
|
||||
* @return PatternProviderLogic对象,如果当前没有打开样板供应器界面则返回null
|
||||
*/
|
||||
public static PatternProviderLogic getCurrentPatternProvider() {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Screen currentScreen = mc.screen;
|
||||
|
||||
if (currentScreen instanceof PatternProviderScreen patternScreen) {
|
||||
PatternProviderMenu menu = (PatternProviderMenu) patternScreen.getMenu();
|
||||
|
||||
// 通过反射安全地访问protected字段
|
||||
try {
|
||||
var logicField = PatternProviderMenu.class.getDeclaredField("logic");
|
||||
logicField.setAccessible(true);
|
||||
return (PatternProviderLogic) logicField.get(menu);
|
||||
} catch (Exception e) {
|
||||
// 如果反射失败,返回null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查当前是否打开了样板供应器界面
|
||||
*
|
||||
* @return 如果当前打开的是样板供应器界面则返回true
|
||||
*/
|
||||
public static boolean isPatternProviderScreenOpen() {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
return mc.screen instanceof PatternProviderScreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前样板供应器界面的Screen对象
|
||||
*
|
||||
* @return PatternProviderScreen对象,如果当前没有打开样板供应器界面则返回null
|
||||
*/
|
||||
public static PatternProviderScreen getCurrentPatternProviderScreen() {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Screen currentScreen = mc.screen;
|
||||
|
||||
if (currentScreen instanceof PatternProviderScreen patternScreen) {
|
||||
return patternScreen;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前样板供应器中执行样板数量倍增
|
||||
*
|
||||
* @param multiplier 倍数(必须大于0)
|
||||
* @return 缩放操作结果,如果当前没有打开样板供应器界面则返回null
|
||||
*/
|
||||
public static PatternProviderDataUtil.PatternScalingResult multiplyCurrentPatternAmounts(double multiplier) {
|
||||
PatternProviderLogic patternProvider = getCurrentPatternProvider();
|
||||
if (patternProvider == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return PatternProviderDataUtil.multiplyPatternAmounts(patternProvider, multiplier);
|
||||
}
|
||||
|
||||
/**
|
||||
* ExtendedAE风格的样板复制倍增
|
||||
* 提供更好的错误处理和恢复机制
|
||||
*
|
||||
* @param multiplier 倍数(必须大于0)
|
||||
* @return 缩放操作结果,如果当前没有打开样板供应器界面则返回null
|
||||
*/
|
||||
public static PatternProviderDataUtil.PatternScalingResult duplicateCurrentPatternAmountsExtendedAEStyle(double multiplier) {
|
||||
PatternProviderLogic patternProvider = getCurrentPatternProvider();
|
||||
if (patternProvider == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return PatternProviderDataUtil.duplicatePatternAmountsExtendedAEStyle(patternProvider, multiplier);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前样板供应器中执行样板数量倍除
|
||||
*
|
||||
* @param divisor 除数(必须大于0)
|
||||
* @return 缩放操作结果,如果当前没有打开样板供应器界面则返回null
|
||||
*/
|
||||
public static PatternProviderDataUtil.PatternScalingResult divideCurrentPatternAmounts(double divisor) {
|
||||
PatternProviderLogic patternProvider = getCurrentPatternProvider();
|
||||
if (patternProvider == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return PatternProviderDataUtil.dividePatternAmounts(patternProvider, divisor);
|
||||
}
|
||||
|
||||
/**
|
||||
* 预览当前样板供应器的缩放效果
|
||||
*
|
||||
* @param scaleFactor 缩放因子
|
||||
* @return 预览结果列表,如果当前没有打开样板供应器界面则返回空列表
|
||||
*/
|
||||
public static java.util.List<PatternProviderDataUtil.PatternScalingPreview> previewCurrentPatternScaling(double scaleFactor) {
|
||||
PatternProviderLogic patternProvider = getCurrentPatternProvider();
|
||||
if (patternProvider == null) {
|
||||
return new java.util.ArrayList<>();
|
||||
}
|
||||
|
||||
return PatternProviderDataUtil.previewPatternScaling(patternProvider, scaleFactor);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.util;
|
||||
package com.extendedae_plus.util.entitySpeed;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.util;
|
||||
package com.extendedae_plus.util.entitySpeed;
|
||||
|
||||
import appeng.api.upgrades.IUpgradeInventory;
|
||||
import com.extendedae_plus.ae.definitions.upgrades.EntitySpeedCardItem;
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package com.extendedae_plus.util;
|
||||
package com.extendedae_plus.util.smartDoubling;
|
||||
|
||||
import appeng.api.stacks.AEKey;
|
||||
import appeng.api.stacks.GenericStack;
|
||||
import appeng.crafting.pattern.AEProcessingPattern;
|
||||
import com.extendedae_plus.ae.api.crafting.ScaledProcessingPattern;
|
||||
import com.extendedae_plus.api.smartDoubling.ISmartDoublingAwarePattern;
|
||||
import com.extendedae_plus.config.ModConfig;
|
||||
import com.extendedae_plus.content.ScaledProcessingPattern;
|
||||
|
||||
public final class PatternScaler {
|
||||
private PatternScaler() {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.extendedae_plus.util;
|
||||
package com.extendedae_plus.util.smartDoubling;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Deque;
|
||||
Loading…
Reference in New Issue
Block a user