Skip to content
Open
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
84 changes: 57 additions & 27 deletions src/main/java/gregtech/integration/jei/JustEnoughItemsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -201,46 +201,41 @@ public void register(IModRegistry registry) {
}
}

for (MTERegistry mteRegistry : GregTechAPI.mteManager.getRegistries()) {
for (ResourceLocation metaTileEntityId : mteRegistry.getKeys()) {
MetaTileEntity metaTileEntity = mteRegistry.getObject(metaTileEntityId);
assert metaTileEntity != null;
for (MetaTileEntity metaTileEntity : getAllMetaTileEntities()) {
if (metaTileEntity instanceof ICategoryOverride override && override.shouldOverride()) {
for (RecipeMap<?> recipeMap : override.getJEIRecipeMapCategoryOverrides()) {
registerRecipeMapCatalyst(registry, recipeMap, metaTileEntity);
}
if (override.getJEICategoryOverrides().length != 0)
registry.addRecipeCatalyst(metaTileEntity.getStackForm(), override.getJEICategoryOverrides());
if (override.shouldReplace()) continue;
}

if (metaTileEntity.getCapability(GregtechTileCapabilities.CAPABILITY_CONTROLLABLE, null) != null) {
IControllable workableCapability = metaTileEntity
.getCapability(GregtechTileCapabilities.CAPABILITY_CONTROLLABLE, null);

if (metaTileEntity instanceof ICategoryOverride override && override.shouldOverride()) {
if (workableCapability instanceof ICategoryOverride override && override.shouldOverride()) {
for (RecipeMap<?> recipeMap : override.getJEIRecipeMapCategoryOverrides()) {
registerRecipeMapCatalyst(registry, recipeMap, metaTileEntity);
}
if (override.getJEICategoryOverrides().length != 0)
registry.addRecipeCatalyst(metaTileEntity.getStackForm(), override.getJEICategoryOverrides());
registry.addRecipeCatalyst(metaTileEntity.getStackForm(),
override.getJEICategoryOverrides());
if (override.shouldReplace()) continue;
}

if (metaTileEntity.getCapability(GregtechTileCapabilities.CAPABILITY_CONTROLLABLE, null) != null) {
IControllable workableCapability = metaTileEntity
.getCapability(GregtechTileCapabilities.CAPABILITY_CONTROLLABLE, null);

if (workableCapability instanceof ICategoryOverride override && override.shouldOverride()) {
for (RecipeMap<?> recipeMap : override.getJEIRecipeMapCategoryOverrides()) {
if (workableCapability instanceof AbstractRecipeLogic logic) {
if (metaTileEntity instanceof IMultipleRecipeMaps multiMapMetaTileEntity) {
for (RecipeMap<?> recipeMap : multiMapMetaTileEntity.getAvailableRecipeMaps()) {
registerRecipeMapCatalyst(registry, recipeMap, metaTileEntity);
}
if (override.getJEICategoryOverrides().length != 0)
registry.addRecipeCatalyst(metaTileEntity.getStackForm(),
override.getJEICategoryOverrides());
if (override.shouldReplace()) continue;
}

if (workableCapability instanceof AbstractRecipeLogic logic) {
if (metaTileEntity instanceof IMultipleRecipeMaps) {
for (RecipeMap<?> recipeMap : ((IMultipleRecipeMaps) metaTileEntity)
.getAvailableRecipeMaps()) {
registerRecipeMapCatalyst(registry, recipeMap, metaTileEntity);
}
} else if (logic.getRecipeMap() != null) {
registerRecipeMapCatalyst(registry, logic.getRecipeMap(), metaTileEntity);
}
} else if (logic.getRecipeMap() != null) {
registerRecipeMapCatalyst(registry, logic.getRecipeMap(), metaTileEntity);
}
}
}

}

List<OreByProduct> oreByproductList = new ArrayList<>();
Expand Down Expand Up @@ -421,4 +416,39 @@ private void registerRecipeMapCatalyst(IModRegistry registry, RecipeMap<?> recip
return Integer.MAX_VALUE;
});
}

/**
* Extracted {@link MetaTileEntity} from all {@link MTERegistry} and sorted them.
* <p>
* This method arrange {@link MetaTileEntity} from additional mods after the ones from GregTech.
*
* @return the sorted list of all {@link MetaTileEntity}.
*/
@ApiStatus.Internal
public static @NotNull List<MetaTileEntity> getAllMetaTileEntities() {
List<MetaTileEntity> metaTileEntities = new ArrayList<>();
for (MTERegistry mteRegistry : GregTechAPI.mteManager.getRegistries()) {
for (ResourceLocation metaTileEntityId : mteRegistry.getKeys()) {
MetaTileEntity metaTileEntity = mteRegistry.getObject(metaTileEntityId);
if (metaTileEntity != null) {
metaTileEntities.add(metaTileEntity);
}
}
}

metaTileEntities.sort((a, b) -> {
String namespaceA = a.metaTileEntityId.getNamespace();
String namespaceB = b.metaTileEntityId.getNamespace();

boolean isGregTechA = namespaceA.equals(GTValues.MODID);
boolean isGregTechB = namespaceB.equals(GTValues.MODID);

if (isGregTechA && !isGregTechB) return -1;
if (!isGregTechA && isGregTechB) return 1;

return namespaceA.compareTo(namespaceB);
});

return metaTileEntities;
}
}
Loading