mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-03-01 15:54:34 +01:00
Start with no recipes and unlock them as you discover spells
This commit is contained in:
parent
10af9e6f49
commit
472034bf15
3 changed files with 35 additions and 15 deletions
|
@ -3,6 +3,7 @@ package com.minelittlepony.unicopia.container;
|
||||||
import com.minelittlepony.common.client.gui.IViewRoot;
|
import com.minelittlepony.common.client.gui.IViewRoot;
|
||||||
import com.minelittlepony.common.client.gui.ScrollContainer;
|
import com.minelittlepony.common.client.gui.ScrollContainer;
|
||||||
import com.minelittlepony.common.client.gui.element.Button;
|
import com.minelittlepony.common.client.gui.element.Button;
|
||||||
|
import com.minelittlepony.common.client.gui.element.Label;
|
||||||
import com.minelittlepony.common.client.gui.sprite.TextureSprite;
|
import com.minelittlepony.common.client.gui.sprite.TextureSprite;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.crafting.SpellbookRecipe;
|
import com.minelittlepony.unicopia.ability.magic.spell.crafting.SpellbookRecipe;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.trait.Trait;
|
import com.minelittlepony.unicopia.ability.magic.spell.trait.Trait;
|
||||||
|
@ -15,6 +16,8 @@ import com.mojang.blaze3d.platform.GlStateManager;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||||
|
import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider;
|
||||||
|
import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
import net.minecraft.client.render.GameRenderer;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
|
@ -23,10 +26,12 @@ import net.minecraft.text.Text;
|
||||||
import net.minecraft.text.TranslatableText;
|
import net.minecraft.text.TranslatableText;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
public class SpellbookScreen extends HandledScreen<SpellbookScreenHandler> {
|
public class SpellbookScreen extends HandledScreen<SpellbookScreenHandler> implements RecipeBookProvider {
|
||||||
public static final Identifier TEXTURE = new Identifier("unicopia", "textures/gui/container/book.png");
|
public static final Identifier TEXTURE = new Identifier("unicopia", "textures/gui/container/book.png");
|
||||||
public static final Identifier SLOT = new Identifier("unicopia", "textures/gui/container/slot.png");
|
public static final Identifier SLOT = new Identifier("unicopia", "textures/gui/container/slot.png");
|
||||||
|
|
||||||
|
private final RecipeBookWidget recipeBook = new RecipeBookWidget();
|
||||||
|
|
||||||
private final ScrollContainer container = new ScrollContainer() {
|
private final ScrollContainer container = new ScrollContainer() {
|
||||||
{
|
{
|
||||||
backgroundColor = 0xFFf9efd3;
|
backgroundColor = 0xFFf9efd3;
|
||||||
|
@ -89,6 +94,18 @@ public class SpellbookScreen extends HandledScreen<SpellbookScreenHandler> {
|
||||||
addDrawableChild(new PageButton(x + 350, y + 187, 1));
|
addDrawableChild(new PageButton(x + 350, y + 187, 1));
|
||||||
addDrawableChild(new PageButton(x + 300, y + 187, -1));
|
addDrawableChild(new PageButton(x + 300, y + 187, -1));
|
||||||
container.init(this::initPageContent);
|
container.init(this::initPageContent);
|
||||||
|
addDrawable(container);
|
||||||
|
((IViewRoot)this).getChildElements().add(container);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refreshRecipeBook() {
|
||||||
|
container.init(this::initPageContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RecipeBookWidget getRecipeBookWidget() {
|
||||||
|
return recipeBook;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -147,8 +164,6 @@ public class SpellbookScreen extends HandledScreen<SpellbookScreenHandler> {
|
||||||
private void initPageContent() {
|
private void initPageContent() {
|
||||||
container.getContentPadding().setVertical(10);
|
container.getContentPadding().setVertical(10);
|
||||||
container.getContentPadding().bottom = 30;
|
container.getContentPadding().bottom = 30;
|
||||||
addDrawable(container);
|
|
||||||
((IViewRoot)this).getChildElements().add(container);
|
|
||||||
|
|
||||||
switch (SpellbookPage.getCurrent()) {
|
switch (SpellbookPage.getCurrent()) {
|
||||||
case DISCOVERIES: {
|
case DISCOVERIES: {
|
||||||
|
@ -173,6 +188,7 @@ public class SpellbookScreen extends HandledScreen<SpellbookScreenHandler> {
|
||||||
case RECIPES:
|
case RECIPES:
|
||||||
int top = 0;
|
int top = 0;
|
||||||
for (SpellbookRecipe recipe : this.client.world.getRecipeManager().listAllOfType(URecipes.SPELLBOOK)) {
|
for (SpellbookRecipe recipe : this.client.world.getRecipeManager().listAllOfType(URecipes.SPELLBOOK)) {
|
||||||
|
if (client.player.getRecipeBook().contains(recipe)) {
|
||||||
IngredientTree tree = new IngredientTree(0, top,
|
IngredientTree tree = new IngredientTree(0, top,
|
||||||
container.width - container.scrollbar.getBounds().width + 2,
|
container.width - container.scrollbar.getBounds().width + 2,
|
||||||
20);
|
20);
|
||||||
|
@ -180,6 +196,10 @@ public class SpellbookScreen extends HandledScreen<SpellbookScreenHandler> {
|
||||||
top += tree.build(container);
|
top += tree.build(container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (top == 0) {
|
||||||
|
container.addButton(new Label(container.width / 2, 0).setCentered()).getStyle().setText("gui.unicopia.spellbook.page.recipes.empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,7 +7,6 @@ import com.minelittlepony.unicopia.EquinePredicates;
|
||||||
import com.minelittlepony.unicopia.USounds;
|
import com.minelittlepony.unicopia.USounds;
|
||||||
import com.minelittlepony.unicopia.ability.magic.spell.trait.SpellTraits;
|
import com.minelittlepony.unicopia.ability.magic.spell.trait.SpellTraits;
|
||||||
import com.minelittlepony.unicopia.entity.player.Pony;
|
import com.minelittlepony.unicopia.entity.player.Pony;
|
||||||
import com.minelittlepony.unicopia.item.UItems;
|
|
||||||
import com.minelittlepony.unicopia.item.URecipes;
|
import com.minelittlepony.unicopia.item.URecipes;
|
||||||
import com.minelittlepony.unicopia.util.InventoryUtil;
|
import com.minelittlepony.unicopia.util.InventoryUtil;
|
||||||
import com.mojang.datafixers.util.Pair;
|
import com.mojang.datafixers.util.Pair;
|
||||||
|
@ -132,6 +131,10 @@ public class SpellbookScreenHandler extends ScreenHandler {
|
||||||
onContentChanged(input);
|
onContentChanged(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getOutputSlotId() {
|
||||||
|
return outputSlot.id;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canUse(PlayerEntity player) {
|
public boolean canUse(PlayerEntity player) {
|
||||||
return EquinePredicates.IS_CASTER.test(player);
|
return EquinePredicates.IS_CASTER.test(player);
|
||||||
|
@ -139,6 +142,7 @@ public class SpellbookScreenHandler extends ScreenHandler {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onContentChanged(Inventory inventory) {
|
public void onContentChanged(Inventory inventory) {
|
||||||
|
super.onContentChanged(inventory);
|
||||||
context.run((world, pos) -> {
|
context.run((world, pos) -> {
|
||||||
if (!world.isClient && !gemSlot.getStack().isEmpty()) {
|
if (!world.isClient && !gemSlot.getStack().isEmpty()) {
|
||||||
outputSlot.setStack(
|
outputSlot.setStack(
|
||||||
|
@ -410,7 +414,7 @@ public class SpellbookScreenHandler extends ScreenHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ResultSlot extends CraftingResultSlot implements SpellbookSlot {
|
public class ResultSlot extends CraftingResultSlot implements SpellbookSlot {
|
||||||
private final PlayerEntity player;
|
private final PlayerEntity player;
|
||||||
private final SpellbookInventory input;
|
private final SpellbookInventory input;
|
||||||
|
|
||||||
|
@ -423,11 +427,6 @@ public class SpellbookScreenHandler extends ScreenHandler {
|
||||||
this.ring = params[2];
|
this.ring = params[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsert(ItemStack stack) {
|
|
||||||
return stack.getItem() == UItems.GEMSTONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStack(ItemStack stack) {
|
public void setStack(ItemStack stack) {
|
||||||
super.setStack(stack);
|
super.setStack(stack);
|
||||||
|
|
|
@ -298,6 +298,7 @@
|
||||||
"gui.unicopia.spellbook.page.inventory": "Inventory",
|
"gui.unicopia.spellbook.page.inventory": "Inventory",
|
||||||
"gui.unicopia.spellbook.page.discoveries": "Discoveries",
|
"gui.unicopia.spellbook.page.discoveries": "Discoveries",
|
||||||
"gui.unicopia.spellbook.page.recipes": "Recipes",
|
"gui.unicopia.spellbook.page.recipes": "Recipes",
|
||||||
|
"gui.unicopia.spellbook.page.recipes.empty": "0 Recipes Unlocked",
|
||||||
|
|
||||||
"gui.unicopia.action.spells_cleared": "Removed all spells",
|
"gui.unicopia.action.spells_cleared": "Removed all spells",
|
||||||
"gui.unicopia.action.no_spells_cleared": "You have no active spells",
|
"gui.unicopia.action.no_spells_cleared": "You have no active spells",
|
||||||
|
|
Loading…
Reference in a new issue