Skip to content
4 changes: 2 additions & 2 deletions src/main/java/com/silvermoon/boxplusplus/boxplusplus.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ public void postInit(FMLPostInitializationEvent event) {
}

@Mod.EventHandler
public void serverStarted(FMLServerStartedEvent event) {
proxy.serverStarted(event);
public void loadCompeted(FMLLoadCompleteEvent event) {
proxy.loadCompeted(event);
}

public static final CreativeTabs BoxTab = new CreativeTabs("BoxPlusPlus") {
Expand Down
93 changes: 43 additions & 50 deletions src/main/java/com/silvermoon/boxplusplus/common/BoxModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -103,64 +103,57 @@ public static BoxModule getModuleByIndex(int index) {
}

public static int[] transMachinesToModule(BoxRoutings routing) {
String unlocalizedName = routing.RoutingMachine.getUnlocalizedName();
if (routing.special != 0) {
if (routing.special > 5402) {
return new int[] { 8, 1 };
}
return new int[] { 8, 0 };
}
switch (routing.RoutingMachine.getUnlocalizedName()) {
case "tile.dire_crafting" -> {
return new int[] { 1, 1 };
}
case "tile.neutronium_compressor" -> {
return new int[] { 5, 0 };
}
if ("tile.dire_crafting".equals(unlocalizedName)) {
return new int[] { 1, 1 };
}
return switch (unlocalizedName.substring(17)) {
case "industrialmixer.controller.tier.single", "multimachine.chemicalreactor" -> new int[] { 0, 0 };
case "gtplusplus.autocrafter.multi", "mxrandomlargemolecularassembler" -> new int[] { 1, 0 };
case "multimachine.cracker", "megadistillationtower", "multimachine.adv.distillationtower", "megaoilcracker", "multimachine.distillationtower" -> new int[] {
2, 0 };
case "multimachine.multifurnace", "industrialthermalcentrifuge.controller.tier.single", "industrialarcfurnace.controller.tier.single", "industrialalloysmelter.controller.tier.single" -> new int[] {
3, 0 };
case "industrialmultimachine.controller.tier.single", "multimachine.basiccompressor", "multimachine.lathe", "multimachine.electromagneticseparator", "multimachine.extractor", "multimachine.fluidextractor", "multimachine.engraver", "multimachine.autoclave", "multimachine.solidifier" -> new int[] {
4, 0 };
case "industrialrockcrusher.controller.tier.single", "industrialfluidheater.controller.tier.single", "multimachine.neutroniumcompressor" -> new int[] {
5, 0 };
case "industrialcuttingmachine.controller.tier.01", "industrialmacerator.controller.tier.single", "industrialbender.controller.tier.single", "industrialextruder.controller.tier.single", "industrialwiremill.controller.tier.single", "industrialhammer.controller.tier.single" -> new int[] {
6, 0 };
case "industrialwashplant.controller.tier.single", "industrialsifter.controller.tier.single", "industrialcentrifuge.controller.tier.single", "industrialelectrolyzer.controller.tier.single", "digester", "basicmachine.electromagneticseparator.tier.06" -> new int[] {
7, 0 };
case "industrialcokeoven.controller.tier.single", "multimachine.pyro", "multimachine.vacuumfreezer", "multimachine.adv.industrialfreezer" -> new int[] {
8, 0 };
case "multimachine.assemblyline" -> new int[] { 9, 0 };
case "industrialsalloyamelter.controller.tier.single" -> new int[] { 10, 0 };
case "moleculartransformer.controller.tier.single", "gtpp.multimachine.replicator" -> new int[] { 0, 1 };
case "preciseassembler" -> new int[] { 1, 1 };
case "chemicalplant.controller.tier.single" -> new int[] { 2, 1 };
case "cyclotron.tier.single" -> new int[] { 3, 1 };
case "multimachine.pcbfactory", "circuitassemblyline" -> new int[] { 4, 1 };
case "largefusioncomputer5" -> new int[] { 5, 1 };
case "dissolution_tank", "bw.biovat" -> new int[] { 7, 1 };
case "electricimplosioncompressor", "componentassemblyline", "projectmoduleassemblert3" -> new int[] { 9,
1 };
case "multimachine.plasma forge", "multimachine.transcendentplasmamixer", "multimachine.nanoforge" -> new int[] {
8, 1 };
case "quantumforcetransformer.controller.tier.single", "frf", "industrialmassfab.controller.tier.single" -> new int[] {
10, 1 };
default -> {
return switch (routing.RoutingMachine.getUnlocalizedName()
.substring(17)) {
case "industrialmixer.controller.tier.single", "multimachine.chemicalreactor" -> new int[] { 0, 0 };
case "gtplusplus.autocrafter.multi", "mxrandomlargemolecularassembler" -> new int[] { 1, 0 };
case "multimachine.cracker", "megadistillationtower", "multimachine.adv.distillationtower", "megaoilcracker", "multimachine.distillationtower" -> new int[] {
2, 0 };
case "multimachine.multifurnace", "industrialthermalcentrifuge.controller.tier.single", "industrialarcfurnace.controller.tier.single", "industrialalloysmelter.controller.tier.single" -> new int[] {
3, 0 };
case "industrialmultimachine.controller.tier.single" -> new int[] { 4, 0 };
case "industrialrockcrusher.controller.tier.single", "industrialfluidheater.controller.tier.single" -> new int[] {
5, 0 };
case "industrialcuttingmachine.controller.tier.01", "industrialmacerator.controller.tier.single", "industrialbender.controller.tier.single", "industrialextruder.controller.tier.single", "industrialwiremill.controller.tier.single", "industrialhammer.controller.tier.single" -> new int[] {
6, 0 };
case "industrialwashplant.controller.tier.single", "industrialsifter.controller.tier.single", "industrialcentrifuge.controller.tier.single", "industrialelectrolyzer.controller.tier.single", "digester", "basicmachine.electromagneticseparator.tier.06" -> new int[] {
7, 0 };
case "industrialcokeoven.controller.tier.single", "multimachine.pyro", "multimachine.vacuumfreezer", "multimachine.adv.industrialfreezer" -> new int[] {
8, 0 };
case "multimachine.assemblyline" -> new int[] { 9, 0 };
case "industrialsalloyamelter.controller.tier.single" -> new int[] { 10, 0 };
case "moleculartransformer.controller.tier.single", "gtpp.multimachine.replicator" -> new int[] { 0,
1 };
case "preciseassembler" -> new int[] { 1, 1 };
case "chemicalplant.controller.tier.single" -> new int[] { 2, 1 };
case "cyclotron.tier.single" -> new int[] { 3, 1 };
case "multimachine.pcbfactory", "circuitassemblyline" -> new int[] { 4, 1 };
case "largefusioncomputer5" -> new int[] { 5, 1 };
case "dissolution_tank", "bw.biovat" -> new int[] { 7, 1 };
case "electricimplosioncompressor", "componentassemblyline", "projectmoduleassemblert3" -> new int[] {
9, 1 };
case "multimachine.plasmaforge", "multimachine.transcendentplasmamixer", "multimachine.nanoforge" -> new int[] {
8, 1 };
case "quantumforcetransformer.controller.tier.single", "frf", "industrialmassfab.controller.tier.single" -> new int[] {
10, 1 };
default -> {
for (MTEMultiBlockBase machine : customerMachineList) {
if (GTUtility.areStacksEqual(machine.getStackForm(1), routing.RoutingMachine, true)) {
yield new int[] { ((IBoxable) machine).getModuleIDSafely(),
((IBoxable) machine).isUpdateModule() ? 1 : 0 };
}
}
yield new int[] { 14, 0 };
for (MTEMultiBlockBase machine : customerMachineList) {
if (GTUtility.areStacksEqual(machine.getStackForm(1), routing.RoutingMachine, true)) {
yield new int[] { ((IBoxable) machine).getModuleIDSafely(),
((IBoxable) machine).isUpdateModule() ? 1 : 0 };
}
};
}
yield new int[] { 14, 0 };
}
}
};
}
}
17 changes: 4 additions & 13 deletions src/main/java/com/silvermoon/boxplusplus/common/CommonProxy.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package com.silvermoon.boxplusplus.common;

import net.minecraftforge.common.MinecraftForge;

import com.silvermoon.boxplusplus.common.config.Config;
import com.silvermoon.boxplusplus.common.loader.BlockRegister;
import com.silvermoon.boxplusplus.common.loader.ItemRegister;
import com.silvermoon.boxplusplus.common.loader.RecipeLoader;
import com.silvermoon.boxplusplus.common.loader.TileEntitiesLoader;
import com.silvermoon.boxplusplus.event.ServerEvent;
import com.silvermoon.boxplusplus.network.NetworkLoader;
import com.silvermoon.boxplusplus.util.ResultModuleRequirement;

import bartworks.API.SideReference;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.event.*;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;

Expand All @@ -31,20 +26,16 @@ public void preInit(FMLPreInitializationEvent event) {
public void init(FMLInitializationEvent event) {
TileEntitiesLoader.register();
CheckRecipeResultRegistry.register(new ResultModuleRequirement(0, false));

ServerEvent serverEvent = new ServerEvent();
if (SideReference.Side.Server) {
MinecraftForge.EVENT_BUS.register(serverEvent);
}
FMLCommonHandler.instance()
.bus()
.register(serverEvent);
}

// postInit "Handle interaction with other mods, complete your setup based on this." (Remove if not needed)
public void postInit(FMLPostInitializationEvent event) {}

public void serverStarted(FMLServerStartedEvent event) {

}

public void loadCompeted(FMLLoadCompleteEvent event) {
new RecipeLoader().run();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,7 @@

public class RecipeLoader implements Runnable {

public static boolean hasLoadedRecipe;

public synchronized void run() {
if (hasLoadedRecipe) {
return;
}
hasLoadedRecipe = true;
addBoxRecipe();
addMachineBlockRecipe();
addModuleRecipe();
Expand Down
24 changes: 0 additions & 24 deletions src/main/java/com/silvermoon/boxplusplus/event/ServerEvent.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.silvermoon.boxplusplus.network;

import com.silvermoon.boxplusplus.Tags;
import com.silvermoon.boxplusplus.network.packet.ServerJoinedPacket;

import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
Expand All @@ -15,8 +14,5 @@ public class NetworkLoader {

public static void init() {
instance.registerMessage(MessageRouting.Handler.class, MessageRouting.class, nextID++, Side.SERVER);

instance.registerMessage(ServerJoinedPacket.class, ServerJoinedPacket.class, nextID++, Side.SERVER);
instance.registerMessage(ServerJoinedPacket.class, ServerJoinedPacket.class, nextID++, Side.CLIENT);
}
}

This file was deleted.

55 changes: 29 additions & 26 deletions src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;

Expand Down Expand Up @@ -268,27 +269,6 @@ public static void checkRouting(GTMachineBox box) {
}
return;
}
// Really? You add neutronium compressor?
if (inputBus.getStackInSlot(i)
.getUnlocalizedName()
.equals("tile.neutronium_compressor")) {
for (ItemStack item : allInputItems) {
ItemStack out = fox.spiteful.avaritia.crafting.CompressorManager.getOutput(item);
if (out != null) {
ItemStack in = item.copy();
in.stackSize = fox.spiteful.avaritia.crafting.CompressorManager.getCost(item);
ItemStack machine = inputBus.getStackInSlot(i)
.copy();
machine.stackSize = 1;
box.routingMap
.add(new BoxRoutings(in, out, machine, TierEU.RECIPE_ZPM, TickTime.MINUTE));
box.routingStatus = 0;
return;
}
}
box.routingStatus = 3;
return;
}
// Extreme Craft Table
if (inputBus.getStackInSlot(i)
.getUnlocalizedName()
Expand Down Expand Up @@ -679,16 +659,39 @@ public static void checkRouting(GTMachineBox box) {

public static List<ItemStack> convertToItemStackList(List<PositionedStack> positionedStacks) {
List<ItemStack> itemStacks = new ArrayList<>();
if (positionedStacks != null) {
for (PositionedStack positionedStack : positionedStacks) {
if (positionedStack != null) {
itemStacks.add(positionedStack.item); // PositionedStack 继承自 ItemStack,直接访问 item 属性
}

if (positionedStacks == null || positionedStacks.isEmpty()) return itemStacks;
for (PositionedStack positionedStack : positionedStacks) {
if (positionedStack == null) continue;
if (!isNormalItem(positionedStack.item)) {
itemStacks.add(positionedStack.item.copy());
}
}
return itemStacks;
}

public static boolean isValidResearchItem(ItemStack stack) {
if (stack == null || !stack.hasTagCompound()) return false;
NBTTagCompound nbt = stack.getTagCompound();
return nbt.hasKey("display");
}

// 判断流体 和 特殊物品
private static boolean isNormalItem(ItemStack stack) {
if (stack == null || stack.getItem() == null) return false;
NBTTagCompound nbt = stack.getTagCompound();
if (nbt == null) return false;

boolean isFluidItem = (stack.getItem() == ItemList.Display_Fluid.getItem()) && nbt.hasKey("mFluidDisplayAmount")
&& nbt.hasKey("mFluidDisplayHeat")
&& nbt.hasKey("mFluidState")
&& nbt.hasKey("mHideStackSize");

boolean isDataItem = (nbt.hasKey("mDataTitle") && nbt.hasKey("mData"));

return isFluidItem || isDataItem || isValidResearchItem(stack);
}

public static void makeRouting(GTNEIDefaultHandler recipe, int recipeIndex, EntityPlayer player) {
List<PositionedStack> machineListWithPos = RecipeCatalysts.getRecipeCatalysts(recipe);
List<ItemStack> machineList = machineListWithPos.stream()
Expand Down
Loading