improved rei compat (#2054)

This commit is contained in:
modmuss50 2020-03-05 19:24:29 +00:00 committed by GitHub
parent 3920ff79d9
commit a88d34b87f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 19 deletions

View file

@ -72,7 +72,7 @@ dependencies {
//Fabric api
modImplementation "net.fabricmc.fabric-api:fabric-api:0.4.29+build.290-1.15"
optionalDependency ("me.shedaniel:RoughlyEnoughItems:3.2.31")
optionalDependency ("me.shedaniel:RoughlyEnoughItems:3.6.0")
optionalDependency ('io.github.cottonmc:LibCD:2.0.1+1.15')
def rcVersion = 'RebornCore:RebornCore-1.15:+'

View file

@ -81,36 +81,35 @@ public class MachineRecipeCategory<R extends RebornRecipe> implements RecipeCate
@Override
public List<Widget> setupDisplay(Supplier<MachineRecipeDisplay<R>> recipeDisplaySupplier, Rectangle bounds) {
MachineRecipeDisplay<R> machineRecipe = recipeDisplaySupplier.get();
Point startPoint = new Point( bounds.getCenterX() - 41, bounds.getCenterY() - recipeLines*12 -1);
List<Widget> widgets = new LinkedList<>();
widgets.add(new RecipeBaseWidget(bounds));
widgets.add(new RecipeArrowWidget(startPoint.x + 24, startPoint.y + 1, true));
widgets.add(RecipeArrowWidget.create(new Point(startPoint.x + 24, startPoint.y + 1), true).time(machineRecipe.getTime() * 50.0));
int i = 0;
for (List<EntryStack> inputs : machineRecipe.getInputEntries()){
widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1 + (i++ * 20)).entries(inputs));
widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1 + (i++ * 20)).entries(inputs).markIsInput());
}
Text energyPerTick = new TranslatableText("techreborn.jei.recipe.running.cost", "E", machineRecipe.getEnergy());
LabelWidget costLabel;
widgets.add(costLabel = new LabelWidget(startPoint.x + 1, startPoint.y + 1 + (i++ * 20), energyPerTick.asFormattedString()));
widgets.add(costLabel = LabelWidget.create(new Point(startPoint.x + 1, startPoint.y + 1 + (i++ * 20)), energyPerTick.asFormattedString()));
costLabel.setHasShadows(false);
costLabel.setDefaultColor(ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : 0xFF404040);
i = 0;
for (EntryStack outputs : machineRecipe.getOutputEntries()){
widgets.add(EntryWidget.create(startPoint.x + 61, startPoint.y + 1 + (i++ * 20)).entry(outputs));
widgets.add(EntryWidget.create(startPoint.x + 61, startPoint.y + 1 + (i++ * 20)).entry(outputs).markIsOutput());
}
int heat = machineRecipe.getHeat();
if (heat > 0) {
String neededHeat = heat + " " + StringUtils.t("techreborn.jei.recipe.heat");
LabelWidget heatLabel;
widgets.add(heatLabel = new LabelWidget(startPoint.x + 61, startPoint.y + 1 + (i++ * 20), neededHeat));
widgets.add(heatLabel = LabelWidget.create(new Point(startPoint.x + 61, startPoint.y + 1 + (i++ * 20)), neededHeat));
heatLabel.setHasShadows(false);
heatLabel.setDefaultColor(ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : 0xFF404040);
}

View file

@ -44,12 +44,14 @@ public class MachineRecipeDisplay<R extends RebornRecipe> implements RecipeDispl
private List<EntryStack> outputs;
private int energy = 0;
private int heat = 0;
private int time = 0;
private FluidInstance fluidInstance = null;
public MachineRecipeDisplay(R recipe) {
this.recipe = recipe;
this.inputs = CollectionUtils.map(recipe.getRebornIngredients(), ing -> CollectionUtils.map(ing.getPreviewStacks(), RebornEntryStack::create));
this.outputs = CollectionUtils.map(recipe.getOutputs(), RebornEntryStack::create);
this.time = recipe.getTime();
this.energy = recipe.getPower();
if (recipe instanceof BlastFurnaceRecipe) {
this.heat = ((BlastFurnaceRecipe) recipe).getHeat();
@ -73,6 +75,10 @@ public class MachineRecipeDisplay<R extends RebornRecipe> implements RecipeDispl
return heat;
}
public int getTime() {
return time;
}
public FluidInstance getFluidInstance() {
return fluidInstance;
}

View file

@ -24,7 +24,7 @@
package techreborn.compat.rei;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.EntryRegistry;
import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.api.RecipeHelper;
@ -169,7 +169,7 @@ public class ReiPlugin implements REIPluginV0 {
public void postRegister() {
// Alright we are going to apply check tags to cells, this should not take long at all.
// Check Tags will not check the amount of the ItemStack, but will enable checking their tags.
for (EntryStack stack : RoughlyEnoughItemsCore.getEntryRegistry().getStacksList())
for (EntryStack stack : EntryRegistry.getInstance().getStacksList())
applyCellEntry(stack);
}
@ -182,7 +182,7 @@ public class ReiPlugin implements REIPluginV0 {
private void registerFluidGeneratorDisplays(RecipeHelper recipeHelper, EFluidGenerator generator, Machine machine) {
Identifier identifier = new Identifier(TechReborn.MOD_ID, machine.name);
GeneratorRecipeHelper.getFluidRecipesForGenerator(generator).getRecipes().forEach(recipe -> {
recipeHelper.registerDisplay(identifier, new FluidGeneratorRecipeDisplay(recipe, identifier));
recipeHelper.registerDisplay(new FluidGeneratorRecipeDisplay(recipe, identifier));
});
}

View file

@ -68,22 +68,21 @@ public class FluidGeneratorRecipeCategory implements RecipeCategory<FluidGenerat
@Override
public List<Widget> setupDisplay(Supplier<FluidGeneratorRecipeDisplay> recipeDisplaySupplier, Rectangle bounds) {
FluidGeneratorRecipeDisplay machineRecipe = recipeDisplaySupplier.get();
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 13);
List<Widget> widgets = new LinkedList<>();
widgets.add(new RecipeBaseWidget(bounds));
widgets.add(new RecipeArrowWidget(startPoint.x + 24, startPoint.y + 1, true));
widgets.add(RecipeArrowWidget.create(new Point(startPoint.x + 24, startPoint.y + 1), true).time(1000.0));
for (List<EntryStack> inputs : machineRecipe.getInputEntries()) {
widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1).entries(inputs));
widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1).entries(inputs).markIsInput());
}
Text energyPerTick = new TranslatableText("techreborn.jei.recipe.generator.total", machineRecipe.getTotalEnergy());
LabelWidget costLabel;
widgets.add(costLabel = new LabelWidget(bounds.getCenterX(), startPoint.y + 20, energyPerTick.asFormattedString()));
widgets.add(costLabel = LabelWidget.create(new Point(bounds.getCenterX(), startPoint.y + 20), energyPerTick.asFormattedString()));
costLabel.setHasShadows(false);
costLabel.setDefaultColor(ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : 0xFF404040);

View file

@ -69,28 +69,27 @@ public class FluidReplicatorRecipeCategory implements RecipeCategory<FluidReplic
@Override
public List<Widget> setupDisplay(Supplier<FluidReplicatorRecipeDisplay> recipeDisplaySupplier, Rectangle bounds) {
FluidReplicatorRecipeDisplay machineRecipe = recipeDisplaySupplier.get();
Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 13);
List<Widget> widgets = new LinkedList<>();
widgets.add(new RecipeBaseWidget(bounds));
widgets.add(new RecipeArrowWidget(startPoint.x + 24, startPoint.y + 1, true));
widgets.add(RecipeArrowWidget.create(new Point(startPoint.x + 24, startPoint.y + 1), true).time(machineRecipe.getTime() * 50.0));
int i = 0;
for (List<EntryStack> inputs : machineRecipe.getInputEntries()) {
widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1 + (i++ * 20)).entries(inputs));
widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1 + (i++ * 20)).entries(inputs).markIsInput());
}
Text energyPerTick = new TranslatableText("techreborn.jei.recipe.running.cost", "E", machineRecipe.getEnergy());
LabelWidget costLabel;
widgets.add(costLabel = new LabelWidget(startPoint.x + 1, startPoint.y + 1 + (i++ * 20), energyPerTick.asFormattedString()));
widgets.add(costLabel = LabelWidget.create(new Point(startPoint.x + 1, startPoint.y + 1 + (i++ * 20)), energyPerTick.asFormattedString()));
costLabel.setHasShadows(false);
costLabel.setDefaultColor(ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : 0xFF404040);
if (!machineRecipe.getOutputEntries().isEmpty())
widgets.add(EntryWidget.create(startPoint.x + 61, startPoint.y + 1).entries(machineRecipe.getOutputEntries()));
widgets.add(EntryWidget.create(startPoint.x + 61, startPoint.y + 1).entries(machineRecipe.getOutputEntries()).markIsOutput());
return widgets;
}

View file

@ -45,6 +45,7 @@ public class FluidReplicatorRecipeDisplay implements RecipeDisplay {
private List<EntryStack> output;
private FluidInstance fluidInstance;
private int energy = 0;
private int time = 0;
public FluidReplicatorRecipeDisplay(FluidReplicatorRecipe recipe) {
this.recipe = recipe;
@ -52,6 +53,7 @@ public class FluidReplicatorRecipeDisplay implements RecipeDisplay {
this.fluidInstance = recipe.getFluidInstance();
this.output = fluidInstance == null ? Collections.emptyList() : Collections.singletonList(RebornEntryStack.create(fluidInstance.getFluid(), fluidInstance.getAmount().getRawValue()));
this.energy = recipe.getPower();
this.time = recipe.getTime();
}
public FluidInstance getFluidInstance() {
@ -62,6 +64,10 @@ public class FluidReplicatorRecipeDisplay implements RecipeDisplay {
return energy;
}
public int getTime() {
return time;
}
@Override
public List<List<EntryStack>> getInputEntries() {
return inputs;