Various fixes and additions #30
@ -2,7 +2,6 @@ package net.banutama.utamacraft;
|
||||
|
||||
import com.mojang.logging.LogUtils;
|
||||
|
||||
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
||||
import net.banutama.utamacraft.block.custom.ModBlocks;
|
||||
import net.banutama.utamacraft.block.entity.ModBlockEntities;
|
||||
import net.banutama.utamacraft.item.ModItems;
|
||||
@ -12,7 +11,10 @@ import net.banutama.utamacraft.recipe.ModRecipes;
|
||||
import net.banutama.utamacraft.screen.InsolatorScreen;
|
||||
import net.banutama.utamacraft.screen.ModMenuTypes;
|
||||
import net.banutama.utamacraft.sound.ModSounds;
|
||||
import net.minecraft.client.RecipeBookCategories;
|
||||
import net.minecraft.client.gui.screens.MenuScreens;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.RegisterRecipeBookCategoriesEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
@ -33,7 +35,6 @@ public class Utamacraft {
|
||||
public static final String MOD_ID = "utamacraft";
|
||||
private static final Logger LOGGER = LogUtils.getLogger();
|
||||
|
||||
// Very Important Comment
|
||||
public Utamacraft() {
|
||||
LOGGER.info("Utamacraft initializing");
|
||||
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||
@ -69,4 +70,14 @@ public class Utamacraft {
|
||||
() -> SlotTypePreset.NECKLACE.getMessageBuilder().build());
|
||||
}
|
||||
}
|
||||
|
||||
@Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
||||
public static class ModClientEvents {
|
||||
@SubscribeEvent
|
||||
public static void onRegisterRecipeBookCategories(RegisterRecipeBookCategoriesEvent event) {
|
||||
event.registerRecipeCategoryFinder(ModRecipes.INSOLATOR_RECIPE_TYPE.get(), recipe -> {
|
||||
return RecipeBookCategories.UNKNOWN;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package net.banutama.utamacraft.block.entity;
|
||||
|
||||
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
||||
import net.banutama.utamacraft.recipe.InsolatorRecipe;
|
||||
import net.banutama.utamacraft.recipe.ModRecipes;
|
||||
import net.banutama.utamacraft.screen.InsolatorMenu;
|
||||
import net.banutama.utamacraft.util.ModEnergyStorage;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@ -283,7 +284,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
||||
}
|
||||
|
||||
return level.getRecipeManager()
|
||||
.getRecipeFor(InsolatorRecipe.Type.INSTANCE, inventory, level);
|
||||
.getRecipeFor(ModRecipes.INSOLATOR_RECIPE_TYPE.get(), inventory, level);
|
||||
}
|
||||
|
||||
private void sendUpdate() {
|
||||
|
@ -0,0 +1,68 @@
|
||||
package net.banutama.utamacraft.integrations.jei;
|
||||
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
import mezz.jei.api.forge.ForgeTypes;
|
||||
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
|
||||
import mezz.jei.api.gui.drawable.IDrawable;
|
||||
import mezz.jei.api.helpers.IGuiHelper;
|
||||
import mezz.jei.api.recipe.IFocusGroup;
|
||||
import mezz.jei.api.recipe.RecipeIngredientRole;
|
||||
import mezz.jei.api.recipe.RecipeType;
|
||||
import mezz.jei.api.recipe.category.IRecipeCategory;
|
||||
import net.banutama.utamacraft.Utamacraft;
|
||||
import net.banutama.utamacraft.block.custom.ModBlocks;
|
||||
import net.banutama.utamacraft.recipe.InsolatorRecipe;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class InsolatorRecipeCategory implements IRecipeCategory<InsolatorRecipe> {
|
||||
public final static ResourceLocation UID = new ResourceLocation(Utamacraft.MOD_ID, "insolator");
|
||||
public final static ResourceLocation TEXTURE =
|
||||
new ResourceLocation(Utamacraft.MOD_ID, "textures/gui/insolator_gui.png");
|
||||
public static final RecipeType<InsolatorRecipe> INSOLATOR_TYPE =
|
||||
new RecipeType<>(InsolatorRecipeCategory.UID, InsolatorRecipe.class);
|
||||
|
||||
private final IDrawable background;
|
||||
private final IDrawable icon;
|
||||
|
||||
public InsolatorRecipeCategory(IGuiHelper guiHelper) {
|
||||
this.background = guiHelper.createDrawable(TEXTURE, 0, 0, 176, 85);
|
||||
this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(ModBlocks.INSOLATOR.get()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull RecipeType<InsolatorRecipe> getRecipeType() {
|
||||
return INSOLATOR_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Component getTitle() {
|
||||
return Component.translatable("block.utamacraft.insolator");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull IDrawable getBackground() {
|
||||
return this.background;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull IDrawable getIcon() {
|
||||
return this.icon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRecipe(@NotNull IRecipeLayoutBuilder builder, @NotNull InsolatorRecipe recipe, @NotNull IFocusGroup focuses) {
|
||||
builder.addSlot(RecipeIngredientRole.INPUT, 86, 15)
|
||||
.addIngredients(recipe.getIngredients().get(0));
|
||||
builder.addSlot(RecipeIngredientRole.INPUT, 33, 16)
|
||||
.addIngredients(ForgeTypes.FLUID_STACK, List.of(recipe.getFluid()))
|
||||
.setFluidRenderer(64000, false, 9, 60);
|
||||
builder.addSlot(RecipeIngredientRole.OUTPUT, 86, 60)
|
||||
.addItemStack(recipe.getResultItem());
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package net.banutama.utamacraft.integrations.jei;
|
||||
|
||||
import mezz.jei.api.IModPlugin;
|
||||
import mezz.jei.api.JeiPlugin;
|
||||
import mezz.jei.api.registration.IRecipeCategoryRegistration;
|
||||
import mezz.jei.api.registration.IRecipeRegistration;
|
||||
import net.banutama.utamacraft.Utamacraft;
|
||||
import net.banutama.utamacraft.recipe.InsolatorRecipe;
|
||||
import net.banutama.utamacraft.recipe.ModRecipes;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.crafting.RecipeManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@JeiPlugin
|
||||
public class ModJeiPlugin implements IModPlugin {
|
||||
@Override
|
||||
public @NotNull ResourceLocation getPluginUid() {
|
||||
return new ResourceLocation(Utamacraft.MOD_ID, "jei_plugin");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCategories(IRecipeCategoryRegistration registration) {
|
||||
registration.addRecipeCategories(new InsolatorRecipeCategory(registration.getJeiHelpers().getGuiHelper()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipes(IRecipeRegistration registration) {
|
||||
RecipeManager manager = Objects.requireNonNull(Minecraft.getInstance().level).getRecipeManager();
|
||||
List<InsolatorRecipe> recipes = manager.getAllRecipesFor(ModRecipes.INSOLATOR_RECIPE_TYPE.get());
|
||||
registration.addRecipes(InsolatorRecipeCategory.INSOLATOR_TYPE, recipes);
|
||||
}
|
||||
}
|
@ -12,6 +12,7 @@ import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.*;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -74,16 +75,21 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
||||
|
||||
@Override
|
||||
public @NotNull RecipeType<?> getType() {
|
||||
return Type.INSTANCE;
|
||||
return ModRecipes.INSOLATOR_RECIPE_TYPE.get();
|
||||
}
|
||||
|
||||
public static class Type implements RecipeType<InsolatorRecipe> {
|
||||
public static final Type INSTANCE = new Type();
|
||||
public static final String ID = "insolator";
|
||||
private Type() {
|
||||
}
|
||||
@Override
|
||||
public @NotNull NonNullList<Ingredient> getIngredients() {
|
||||
return NonNullList.of(Ingredient.EMPTY, input);
|
||||
}
|
||||
|
||||
// public static class Type implements RecipeType<InsolatorRecipe> {
|
||||
// public static final Type INSTANCE = new Type();
|
||||
// public static final String ID = "insolator";
|
||||
// private Type() {
|
||||
// }
|
||||
// }
|
||||
|
||||
public static class Serializer implements RecipeSerializer<InsolatorRecipe> {
|
||||
public static final Serializer INSTANCE = new Serializer();
|
||||
public static final ResourceLocation ID = new ResourceLocation(Utamacraft.MOD_ID, "insolator");
|
||||
|
@ -2,6 +2,7 @@ package net.banutama.utamacraft.recipe;
|
||||
|
||||
import net.banutama.utamacraft.Utamacraft;
|
||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
@ -10,11 +11,21 @@ import net.minecraftforge.registries.RegistryObject;
|
||||
public class ModRecipes {
|
||||
public static final DeferredRegister<RecipeSerializer<?>> SERIALIZERS =
|
||||
DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Utamacraft.MOD_ID);
|
||||
public static final DeferredRegister<RecipeType<?>> TYPES =
|
||||
DeferredRegister.create(ForgeRegistries.RECIPE_TYPES, Utamacraft.MOD_ID);
|
||||
|
||||
public static final RegistryObject<RecipeSerializer<InsolatorRecipe>> INSOLATOR_SERIALIZER =
|
||||
SERIALIZERS.register("insolator", () -> InsolatorRecipe.Serializer.INSTANCE);
|
||||
public static final RegistryObject<RecipeType<InsolatorRecipe>> INSOLATOR_RECIPE_TYPE =
|
||||
TYPES.register("insolator_recipe", () -> new RecipeType<InsolatorRecipe>() {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "insolator_recipe";
|
||||
}
|
||||
});
|
||||
|
||||
public static void register(IEventBus bus) {
|
||||
SERIALIZERS.register(bus);
|
||||
TYPES.register(bus);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user