Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.

54 changes: 28 additions & 26 deletions src/main/java/com/silvermoon/boxplusplus/util/BoxRoutings.java
Original file line number Diff line number Diff line change
Expand Up @@ -268,27 +268,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 +658,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