Implement extra area for schematic table

This commit is contained in:
Snownee 2021-03-16 00:26:00 +08:00
parent 8281c5746a
commit a534d2230c
3 changed files with 17 additions and 6 deletions

View file

@ -40,6 +40,7 @@ import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipe
import com.simibubi.create.content.contraptions.processing.BasinRecipe; import com.simibubi.create.content.contraptions.processing.BasinRecipe;
import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateScreen; import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateScreen;
import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen; import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen;
import com.simibubi.create.content.schematics.block.SchematicTableScreen;
import com.simibubi.create.content.schematics.block.SchematicannonScreen; import com.simibubi.create.content.schematics.block.SchematicannonScreen;
import com.simibubi.create.foundation.config.AllConfigs; import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CRecipes; import com.simibubi.create.foundation.config.CRecipes;
@ -226,8 +227,10 @@ public class CreateJEI implements IModPlugin {
@Override @Override
public void registerGuiHandlers(IGuiHandlerRegistration registration) { public void registerGuiHandlers(IGuiHandlerRegistration registration) {
registration.addGuiContainerHandler(AdjustableCrateScreen.class, new SlotMover<>()); SlotMover slotMover = new SlotMover();
registration.addGuiContainerHandler(SchematicannonScreen.class, new SlotMover<>()); registration.addGuiContainerHandler(AdjustableCrateScreen.class, slotMover);
registration.addGuiContainerHandler(SchematicannonScreen.class, slotMover);
registration.addGuiContainerHandler(SchematicTableScreen.class, slotMover);
registration.addGhostIngredientHandler(AbstractFilterScreen.class, new FilterGhostIngredientHandler()); registration.addGhostIngredientHandler(AbstractFilterScreen.class, new FilterGhostIngredientHandler());
} }

View file

@ -6,17 +6,16 @@ import com.simibubi.create.foundation.gui.AbstractSimiContainerScreen;
import mezz.jei.api.gui.handlers.IGuiContainerHandler; import mezz.jei.api.gui.handlers.IGuiContainerHandler;
import net.minecraft.client.renderer.Rectangle2d; import net.minecraft.client.renderer.Rectangle2d;
import net.minecraft.inventory.container.Container;
/** /**
* Allows a {@link AbstractSimiContainerScreen} to specify an area in getExtraArea() that will be avoided by JEI * Allows a {@link AbstractSimiContainerScreen} to specify an area in getExtraArea() that will be avoided by JEI
* *
* Name is taken from CoFHCore's 1.12 implementation. * Name is taken from CoFHCore's 1.12 implementation.
*/ */
public class SlotMover<T extends Container> implements IGuiContainerHandler<AbstractSimiContainerScreen<T>> { public class SlotMover implements IGuiContainerHandler<AbstractSimiContainerScreen<?>> {
@Override @Override
public List<Rectangle2d> getGuiExtraAreas(AbstractSimiContainerScreen<T> containerScreen) { public List<Rectangle2d> getGuiExtraAreas(AbstractSimiContainerScreen<?> containerScreen) {
return containerScreen.getExtraAreas(); return containerScreen.getExtraAreas();
} }
} }

View file

@ -4,6 +4,7 @@ import static com.simibubi.create.foundation.gui.AllGuiTextures.SCHEMATIC_TABLE;
import static com.simibubi.create.foundation.gui.AllGuiTextures.SCHEMATIC_TABLE_PROGRESS; import static com.simibubi.create.foundation.gui.AllGuiTextures.SCHEMATIC_TABLE_PROGRESS;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
@ -21,6 +22,7 @@ import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput;
import com.simibubi.create.foundation.utility.Lang; import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.client.gui.IHasContainer; import net.minecraft.client.gui.IHasContainer;
import net.minecraft.client.renderer.Rectangle2d;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.Util; import net.minecraft.util.Util;
@ -35,6 +37,7 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
private IconButton folderButton; private IconButton folderButton;
private IconButton refreshButton; private IconButton refreshButton;
private Label schematicsLabel; private Label schematicsLabel;
private List<Rectangle2d> extraAreas;
private final String title = Lang.translate("gui.schematicTable.title"); private final String title = Lang.translate("gui.schematicTable.title");
private final String uploading = Lang.translate("gui.schematicTable.uploading"); private final String uploading = Lang.translate("gui.schematicTable.uploading");
@ -87,12 +90,14 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
widgets.add(confirmButton); widgets.add(confirmButton);
widgets.add(folderButton); widgets.add(folderButton);
widgets.add(refreshButton); widgets.add(refreshButton);
extraAreas = new ArrayList<>();
extraAreas.add(new Rectangle2d(mainLeft, mainTop, SCHEMATIC_TABLE.width, SCHEMATIC_TABLE.height));
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
super.drawGuiContainerBackgroundLayer(partialTicks, mouseX, mouseY); super.drawGuiContainerBackgroundLayer(partialTicks, mouseX, mouseY);
} }
@Override @Override
@ -212,4 +217,8 @@ public class SchematicTableScreen extends AbstractSimiContainerScreen<SchematicT
return super.mouseClicked(p_mouseClicked_1_, p_mouseClicked_3_, p_mouseClicked_5_); return super.mouseClicked(p_mouseClicked_1_, p_mouseClicked_3_, p_mouseClicked_5_);
} }
@Override
public List<Rectangle2d> getExtraAreas() {
return extraAreas;
}
} }