正确注册特殊配方,允许发射器发射迫击炮炮弹

This commit is contained in:
Light_Quanta 2025-04-03 22:37:04 +08:00
parent c049eef081
commit c808084db6
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
8 changed files with 63 additions and 3 deletions

View file

@ -0,0 +1,4 @@
// 1.21.1 2025-04-03T22:15:00.0218531 Recipes
9775e550332c69f1ee2ac4a09834a35db6f6a2ed data/minecraft/recipe/ammo_box_add_ammo.json
9775e550332c69f1ee2ac4a09834a35db6f6a2ed data/minecraft/recipe/ammo_box_extract_ammo.json
2e1d1bbf32801f3d355c0d3f78ebbb1122cebd4c data/minecraft/recipe/potion_mortar_shell.json

View file

@ -0,0 +1,4 @@
{
"type": "superbwarfare:ammo_box_add_ammo",
"category": "misc"
}

View file

@ -0,0 +1,4 @@
{
"type": "superbwarfare:ammo_box_extract_ammo",
"category": "misc"
}

View file

@ -0,0 +1,4 @@
{
"type": "superbwarfare:potion_mortar_shell",
"category": "misc"
}

View file

@ -22,7 +22,7 @@ public class DataGenerators {
ExistingFileHelper existingFileHelper = event.getExistingFileHelper();
generator.addProvider(event.includeServer(), ModLootTableProvider.create(packOutput, event.getLookupProvider()));
// generator.addProvider(event.includeServer(), new ModRecipeProvider(packOutput));
generator.addProvider(event.includeServer(), new ModRecipeProvider(packOutput, event.getLookupProvider()));
generator.addProvider(event.includeServer(), new ModBlockStateProvider(packOutput, existingFileHelper));
generator.addProvider(event.includeServer(), new ModItemModelProvider(packOutput, existingFileHelper));
ModBlockTagProvider tagProvider = generator.addProvider(event.includeServer(), new ModBlockTagProvider(packOutput, lookupProvider, existingFileHelper));

View file

@ -0,0 +1,28 @@
package com.atsuishio.superbwarfare.datagen;
import com.atsuishio.superbwarfare.recipe.AmmoBoxAddAmmoRecipe;
import com.atsuishio.superbwarfare.recipe.AmmoBoxExtractAmmoRecipe;
import com.atsuishio.superbwarfare.recipe.PotionMortarShellRecipe;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.RecipeProvider;
import net.minecraft.data.recipes.SpecialRecipeBuilder;
import net.neoforged.neoforge.common.conditions.IConditionBuilder;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.CompletableFuture;
public class ModRecipeProvider extends RecipeProvider implements IConditionBuilder {
public ModRecipeProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
super(output, registries);
}
@Override
protected void buildRecipes(@NotNull RecipeOutput recipeOutput) {
SpecialRecipeBuilder.special(PotionMortarShellRecipe::new).save(recipeOutput, "potion_mortar_shell");
SpecialRecipeBuilder.special(AmmoBoxAddAmmoRecipe::new).save(recipeOutput, "ammo_box_add_ammo");
SpecialRecipeBuilder.special(AmmoBoxExtractAmmoRecipe::new).save(recipeOutput, "ammo_box_extract_ammo");
}
}

View file

@ -1,12 +1,20 @@
package com.atsuishio.superbwarfare.item.common.ammo;
import com.atsuishio.superbwarfare.entity.projectile.MortarShellEntity;
import com.atsuishio.superbwarfare.init.ModEntities;
import net.minecraft.core.Direction;
import net.minecraft.core.Position;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.Projectile;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ProjectileItem;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull;
public class MortarShell extends Item {
import javax.annotation.ParametersAreNonnullByDefault;
public class MortarShell extends Item implements ProjectileItem {
public MortarShell() {
super(new Properties());
@ -17,4 +25,12 @@ public class MortarShell extends Item {
shellEntity.setEffectsFromItem(stack);
return shellEntity;
}
@Override
@ParametersAreNonnullByDefault
public @NotNull Projectile asProjectile(Level level, Position pos, ItemStack stack, Direction direction) {
var shell = new MortarShellEntity(ModEntities.MORTAR_SHELL.get(), pos.x(), pos.y(), pos.z(), level);
shell.setEffectsFromItem(stack);
return shell;
}
}

View file

@ -58,7 +58,7 @@ public class PotionMortarShellRecipe extends CustomRecipe {
return ItemStack.EMPTY;
} else {
ItemStack res = new ItemStack(ModItems.POTION_MORTAR_SHELL.get(), 4);
res.set(DataComponents.POTION_CONTENTS, res.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY));
res.set(DataComponents.POTION_CONTENTS, stack.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY));
return res;
}