Various fixes and additions #30
BIN
assets/tungsten_ore.afdesign
Normal file
BIN
assets/tungsten_ore.afdesign
Normal file
Binary file not shown.
@ -2,7 +2,6 @@ package net.banutama.utamacraft;
|
|||||||
|
|
||||||
import com.mojang.logging.LogUtils;
|
import com.mojang.logging.LogUtils;
|
||||||
|
|
||||||
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
|
||||||
import net.banutama.utamacraft.block.custom.ModBlocks;
|
import net.banutama.utamacraft.block.custom.ModBlocks;
|
||||||
import net.banutama.utamacraft.block.entity.ModBlockEntities;
|
import net.banutama.utamacraft.block.entity.ModBlockEntities;
|
||||||
import net.banutama.utamacraft.item.ModItems;
|
import net.banutama.utamacraft.item.ModItems;
|
||||||
@ -12,7 +11,12 @@ import net.banutama.utamacraft.recipe.ModRecipes;
|
|||||||
import net.banutama.utamacraft.screen.InsolatorScreen;
|
import net.banutama.utamacraft.screen.InsolatorScreen;
|
||||||
import net.banutama.utamacraft.screen.ModMenuTypes;
|
import net.banutama.utamacraft.screen.ModMenuTypes;
|
||||||
import net.banutama.utamacraft.sound.ModSounds;
|
import net.banutama.utamacraft.sound.ModSounds;
|
||||||
|
import net.banutama.utamacraft.world.feature.ModConfiguredFeatures;
|
||||||
|
import net.banutama.utamacraft.world.feature.ModPlacedFeatures;
|
||||||
|
import net.minecraft.client.RecipeBookCategories;
|
||||||
import net.minecraft.client.gui.screens.MenuScreens;
|
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.common.MinecraftForge;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
@ -33,7 +37,6 @@ public class Utamacraft {
|
|||||||
public static final String MOD_ID = "utamacraft";
|
public static final String MOD_ID = "utamacraft";
|
||||||
private static final Logger LOGGER = LogUtils.getLogger();
|
private static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
|
||||||
// Very Important Comment
|
|
||||||
public Utamacraft() {
|
public Utamacraft() {
|
||||||
LOGGER.info("Utamacraft initializing");
|
LOGGER.info("Utamacraft initializing");
|
||||||
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
@ -45,6 +48,8 @@ public class Utamacraft {
|
|||||||
ModMenuTypes.register(bus);
|
ModMenuTypes.register(bus);
|
||||||
ModSounds.register(bus);
|
ModSounds.register(bus);
|
||||||
ModRecipes.register(bus);
|
ModRecipes.register(bus);
|
||||||
|
ModConfiguredFeatures.register(bus);
|
||||||
|
ModPlacedFeatures.register(bus);
|
||||||
|
|
||||||
bus.addListener(this::commonSetup);
|
bus.addListener(this::commonSetup);
|
||||||
MinecraftForge.EVENT_BUS.register(this);
|
MinecraftForge.EVENT_BUS.register(this);
|
||||||
@ -69,4 +74,14 @@ public class Utamacraft {
|
|||||||
() -> SlotTypePreset.NECKLACE.getMessageBuilder().build());
|
() -> 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;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,9 +8,11 @@ import net.banutama.utamacraft.block.custom.TintedEtherealGlassBlock;
|
|||||||
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
||||||
import net.banutama.utamacraft.item.ModCreativeModeTab;
|
import net.banutama.utamacraft.item.ModCreativeModeTab;
|
||||||
import net.banutama.utamacraft.item.ModItems;
|
import net.banutama.utamacraft.item.ModItems;
|
||||||
|
import net.minecraft.util.valueproviders.UniformInt;
|
||||||
import net.minecraft.world.item.BlockItem;
|
import net.minecraft.world.item.BlockItem;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraft.world.level.block.DropExperienceBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||||
import net.minecraft.world.level.material.Material;
|
import net.minecraft.world.level.material.Material;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
@ -27,6 +29,18 @@ public class ModBlocks {
|
|||||||
registerBlock("ethereal_glass", EtherealGlassBlock::new);
|
registerBlock("ethereal_glass", EtherealGlassBlock::new);
|
||||||
public static final RegistryObject<Block> TINTED_ETHEREAL_GLASS =
|
public static final RegistryObject<Block> TINTED_ETHEREAL_GLASS =
|
||||||
registerBlock("tinted_ethereal_glass", TintedEtherealGlassBlock::new);
|
registerBlock("tinted_ethereal_glass", TintedEtherealGlassBlock::new);
|
||||||
|
public static final RegistryObject<Block> TUNGSTEN_ORE =
|
||||||
|
registerBlock("tungsten_ore",
|
||||||
|
() -> new DropExperienceBlock(BlockBehaviour.Properties.of(Material.STONE)
|
||||||
|
.strength(6.0f)
|
||||||
|
.requiresCorrectToolForDrops(),
|
||||||
|
UniformInt.of(3, 7)));
|
||||||
|
public static final RegistryObject<Block> DEEPSLATE_TUNGSTEN_ORE =
|
||||||
|
registerBlock("deepslate_tungsten_ore",
|
||||||
|
() -> new DropExperienceBlock(BlockBehaviour.Properties.of(Material.STONE)
|
||||||
|
.strength(6.0f)
|
||||||
|
.requiresCorrectToolForDrops(),
|
||||||
|
UniformInt.of(3, 7)));
|
||||||
public static final RegistryObject<Block> TUNGSTEN_BLOCK =
|
public static final RegistryObject<Block> TUNGSTEN_BLOCK =
|
||||||
registerBlock("tungsten_block",
|
registerBlock("tungsten_block",
|
||||||
() -> new Block(BlockBehaviour.Properties.of(Material.METAL)
|
() -> new Block(BlockBehaviour.Properties.of(Material.METAL)
|
||||||
|
@ -2,6 +2,7 @@ package net.banutama.utamacraft.block.entity;
|
|||||||
|
|
||||||
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
import net.banutama.utamacraft.block.custom.InsolatorBlock;
|
||||||
import net.banutama.utamacraft.recipe.InsolatorRecipe;
|
import net.banutama.utamacraft.recipe.InsolatorRecipe;
|
||||||
|
import net.banutama.utamacraft.recipe.ModRecipes;
|
||||||
import net.banutama.utamacraft.screen.InsolatorMenu;
|
import net.banutama.utamacraft.screen.InsolatorMenu;
|
||||||
import net.banutama.utamacraft.util.ModEnergyStorage;
|
import net.banutama.utamacraft.util.ModEnergyStorage;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
@ -37,7 +38,6 @@ import java.util.Optional;
|
|||||||
|
|
||||||
public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
||||||
public static final int ENERGY_REQUIRED = 32;
|
public static final int ENERGY_REQUIRED = 32;
|
||||||
public static final int MAX_PROGRESS = 500;
|
|
||||||
|
|
||||||
private final ItemStackHandler inventory = new ItemStackHandler(3) {
|
private final ItemStackHandler inventory = new ItemStackHandler(3) {
|
||||||
@Override
|
@Override
|
||||||
@ -83,6 +83,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
private final LazyOptional<FluidTank> fluidOptional = LazyOptional.of(() -> fluid);
|
private final LazyOptional<FluidTank> fluidOptional = LazyOptional.of(() -> fluid);
|
||||||
|
|
||||||
private int progress = 0;
|
private int progress = 0;
|
||||||
|
private int ticks = 0;
|
||||||
private boolean active = false;
|
private boolean active = false;
|
||||||
|
|
||||||
public InsolatorBlockEntity(BlockPos pPos, BlockState pBlockState) {
|
public InsolatorBlockEntity(BlockPos pPos, BlockState pBlockState) {
|
||||||
@ -132,6 +133,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
nbt.put("fluid", fluid.writeToNBT(new CompoundTag()));
|
nbt.put("fluid", fluid.writeToNBT(new CompoundTag()));
|
||||||
nbt.put("energy", energy.serializeNBT());
|
nbt.put("energy", energy.serializeNBT());
|
||||||
nbt.putInt("progress", progress);
|
nbt.putInt("progress", progress);
|
||||||
|
nbt.putInt("ticks", ticks);
|
||||||
nbt.putBoolean("active", active);
|
nbt.putBoolean("active", active);
|
||||||
super.saveAdditional(nbt);
|
super.saveAdditional(nbt);
|
||||||
}
|
}
|
||||||
@ -143,6 +145,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
fluid.readFromNBT(nbt.getCompound("fluid"));
|
fluid.readFromNBT(nbt.getCompound("fluid"));
|
||||||
energy.deserializeNBT(nbt.get("energy"));
|
energy.deserializeNBT(nbt.get("energy"));
|
||||||
progress = nbt.getInt("progress");
|
progress = nbt.getInt("progress");
|
||||||
|
ticks = nbt.getInt("ticks");
|
||||||
active = nbt.getBoolean("active");
|
active = nbt.getBoolean("active");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,21 +167,32 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean newActive;
|
boolean newActive = entity.active;
|
||||||
|
|
||||||
if (entity.canCraft().isPresent() && entity.hasEnoughEnergy()) {
|
Optional<InsolatorRecipe> optionalInsolatorRecipe = entity.getRecipe();
|
||||||
++entity.progress;
|
if (optionalInsolatorRecipe.isEmpty()) {
|
||||||
newActive = true;
|
|
||||||
entity.energy.extractEnergy(ENERGY_REQUIRED, false);
|
|
||||||
setChanged(level, pos, state);
|
|
||||||
|
|
||||||
if (entity.progress >= MAX_PROGRESS) {
|
|
||||||
entity.craftItem();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
entity.resetProgress();
|
|
||||||
newActive = false;
|
newActive = false;
|
||||||
setChanged(level, pos, state);
|
} else {
|
||||||
|
InsolatorRecipe insolatorRecipe = optionalInsolatorRecipe.get();
|
||||||
|
if (entity.canCraft(insolatorRecipe) && entity.hasEnoughEnergy(insolatorRecipe)) {
|
||||||
|
if (entity.progress == 0) {
|
||||||
|
entity.ticks = insolatorRecipe.getTicks();
|
||||||
|
}
|
||||||
|
|
||||||
|
++entity.progress;
|
||||||
|
newActive = true;
|
||||||
|
|
||||||
|
entity.energy.extractEnergy(ENERGY_REQUIRED, false);
|
||||||
|
setChanged(level, pos, state);
|
||||||
|
|
||||||
|
if (entity.progress >= insolatorRecipe.getTicks()) {
|
||||||
|
entity.craftItem(insolatorRecipe);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
entity.resetProgress(insolatorRecipe.getTicks());
|
||||||
|
newActive = false;
|
||||||
|
setChanged(level, pos, state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newActive != entity.active) {
|
if (newActive != entity.active) {
|
||||||
@ -210,18 +224,14 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetProgress() {
|
private void resetProgress(int newTicks) {
|
||||||
this.progress = 0;
|
this.progress = 0;
|
||||||
|
this.ticks = newTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void craftItem() {
|
private void craftItem(InsolatorRecipe recipe) {
|
||||||
Optional<InsolatorRecipe> recipe = canCraft();
|
|
||||||
if (recipe.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drain the amount of fluid specified in our recipe from the fluid tank
|
// Drain the amount of fluid specified in our recipe from the fluid tank
|
||||||
fluid.drain(recipe.get().getFluid().getAmount(), IFluidHandler.FluidAction.EXECUTE);
|
fluid.drain(recipe.getFluid().getAmount(), IFluidHandler.FluidAction.EXECUTE);
|
||||||
|
|
||||||
// Remove an item from the input slot.
|
// Remove an item from the input slot.
|
||||||
inventory.extractItem(1, 1, false);
|
inventory.extractItem(1, 1, false);
|
||||||
@ -229,47 +239,38 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
// Insert the recipe output in to the output slot.
|
// Insert the recipe output in to the output slot.
|
||||||
ItemStack output = inventory.getStackInSlot(2);
|
ItemStack output = inventory.getStackInSlot(2);
|
||||||
if (output.isEmpty()) {
|
if (output.isEmpty()) {
|
||||||
inventory.setStackInSlot(2, recipe.get().getResultItem().copy());
|
inventory.setStackInSlot(2, recipe.getResultItem().copy());
|
||||||
} else {
|
} else {
|
||||||
output.grow(recipe.get().getResultItem().getCount());
|
output.grow(recipe.getResultItem().getCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
resetProgress();
|
resetProgress(recipe.getTicks());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasEnoughEnergy() {
|
private boolean hasEnoughEnergy(InsolatorRecipe recipe) {
|
||||||
return energy.getEnergyStored() >= ENERGY_REQUIRED * MAX_PROGRESS;
|
return energy.getEnergyStored() >= ENERGY_REQUIRED * recipe.getTicks();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<InsolatorRecipe> canCraft() {
|
private boolean canCraft(InsolatorRecipe recipe) {
|
||||||
Optional<InsolatorRecipe> recipe = getRecipe();
|
|
||||||
if (recipe.isEmpty()) {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure that the correct fluid is in the tank.
|
// Make sure that the correct fluid is in the tank.
|
||||||
if (!fluid.getFluid().equals(recipe.get().getFluid())) {
|
if (!fluid.getFluid().equals(recipe.getFluid())) {
|
||||||
return Optional.empty();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure that we have enough fluid
|
// Ensure that we have enough fluid
|
||||||
if (fluid.getFluidAmount() < recipe.get().getFluid().getAmount()) {
|
if (fluid.getFluidAmount() < recipe.getFluid().getAmount()) {
|
||||||
return Optional.empty();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack output = inventory.getStackInSlot(2);
|
ItemStack output = inventory.getStackInSlot(2);
|
||||||
|
|
||||||
// If the output isn't empty, and the item in the output is different to the output of the recipe, we cannot process.
|
// If the output isn't empty, and the item in the output is different to the output of the recipe, we cannot process.
|
||||||
if (!output.isEmpty() && output.getItem() != recipe.get().getResultItem().getItem()) {
|
if (!output.isEmpty() && output.getItem() != recipe.getResultItem().getItem()) {
|
||||||
return Optional.empty();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure that the output is not saturated.
|
// Make sure that the output is not saturated.
|
||||||
if (output.getCount() + recipe.get().getResultItem().getCount() > output.getMaxStackSize()) {
|
return output.getCount() + recipe.getResultItem().getCount() <= output.getMaxStackSize();
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
return recipe;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<InsolatorRecipe> getRecipe() {
|
private Optional<InsolatorRecipe> getRecipe() {
|
||||||
@ -283,7 +284,7 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return level.getRecipeManager()
|
return level.getRecipeManager()
|
||||||
.getRecipeFor(InsolatorRecipe.Type.INSTANCE, inventory, level);
|
.getRecipeFor(ModRecipes.INSOLATOR_RECIPE_TYPE.get(), inventory, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendUpdate() {
|
private void sendUpdate() {
|
||||||
@ -313,4 +314,8 @@ public class InsolatorBlockEntity extends BlockEntity implements MenuProvider {
|
|||||||
public int getProgress() {
|
public int getProgress() {
|
||||||
return this.progress;
|
return this.progress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getTicks() {
|
||||||
|
return this.ticks;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,7 @@ import dan200.computercraft.api.lua.MethodResult;
|
|||||||
import net.banutama.utamacraft.block.entity.InsolatorBlockEntity;
|
import net.banutama.utamacraft.block.entity.InsolatorBlockEntity;
|
||||||
import net.banutama.utamacraft.integrations.computercraft.utils.WrapResult;
|
import net.banutama.utamacraft.integrations.computercraft.utils.WrapResult;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
import net.minecraftforge.common.util.LazyOptional;
|
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
@ -42,7 +40,7 @@ public class InsolatorPeripheral extends BasePeripheral {
|
|||||||
Map<String, Object> result = new HashMap<>();
|
Map<String, Object> result = new HashMap<>();
|
||||||
result.put("active", insolator.getActive());
|
result.put("active", insolator.getActive());
|
||||||
result.put("progress", insolator.getProgress());
|
result.put("progress", insolator.getProgress());
|
||||||
result.put("maxProgress", InsolatorBlockEntity.MAX_PROGRESS);
|
result.put("ticks", insolator.getTicks());
|
||||||
result.put("energy", WrapResult.wrap(insolator.getEnergy()));
|
result.put("energy", WrapResult.wrap(insolator.getEnergy()));
|
||||||
insolator.getInventoryOptional().ifPresent(inventory -> result.put("inventory", WrapResult.wrap(inventory)));
|
insolator.getInventoryOptional().ifPresent(inventory -> result.put("inventory", WrapResult.wrap(inventory)));
|
||||||
|
|
||||||
|
@ -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.item.crafting.*;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@ -20,12 +21,14 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
|||||||
private final ItemStack output;
|
private final ItemStack output;
|
||||||
private final Ingredient input;
|
private final Ingredient input;
|
||||||
private final FluidStack fluid;
|
private final FluidStack fluid;
|
||||||
|
private final int ticks;
|
||||||
|
|
||||||
public InsolatorRecipe(ResourceLocation id, ItemStack output, Ingredient input, FluidStack fluid) {
|
public InsolatorRecipe(ResourceLocation id, ItemStack output, Ingredient input, FluidStack fluid, int ticks) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.output = output;
|
this.output = output;
|
||||||
this.input = input;
|
this.input = input;
|
||||||
this.fluid = fluid;
|
this.fluid = fluid;
|
||||||
|
this.ticks = ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -51,6 +54,10 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
|||||||
return fluid;
|
return fluid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getTicks() {
|
||||||
|
return ticks;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull ItemStack getResultItem() {
|
public @NotNull ItemStack getResultItem() {
|
||||||
return output.copy();
|
return output.copy();
|
||||||
@ -68,16 +75,21 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull RecipeType<?> getType() {
|
public @NotNull RecipeType<?> getType() {
|
||||||
return Type.INSTANCE;
|
return ModRecipes.INSOLATOR_RECIPE_TYPE.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Type implements RecipeType<InsolatorRecipe> {
|
@Override
|
||||||
public static final Type INSTANCE = new Type();
|
public @NotNull NonNullList<Ingredient> getIngredients() {
|
||||||
public static final String ID = "insolator";
|
return NonNullList.of(Ingredient.EMPTY, input);
|
||||||
private Type() {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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 class Serializer implements RecipeSerializer<InsolatorRecipe> {
|
||||||
public static final Serializer INSTANCE = new Serializer();
|
public static final Serializer INSTANCE = new Serializer();
|
||||||
public static final ResourceLocation ID = new ResourceLocation(Utamacraft.MOD_ID, "insolator");
|
public static final ResourceLocation ID = new ResourceLocation(Utamacraft.MOD_ID, "insolator");
|
||||||
@ -87,7 +99,8 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
|||||||
ItemStack output = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(pSerializedRecipe, "output"));
|
ItemStack output = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(pSerializedRecipe, "output"));
|
||||||
Ingredient input = Ingredient.fromJson(pSerializedRecipe.getAsJsonObject("input"));
|
Ingredient input = Ingredient.fromJson(pSerializedRecipe.getAsJsonObject("input"));
|
||||||
FluidStack fluid = FluidStack.CODEC.decode(JsonOps.INSTANCE, pSerializedRecipe.get("fluid")).result().orElseThrow().getFirst();
|
FluidStack fluid = FluidStack.CODEC.decode(JsonOps.INSTANCE, pSerializedRecipe.get("fluid")).result().orElseThrow().getFirst();
|
||||||
return new InsolatorRecipe(pRecipeId, output, input, fluid);
|
int ticks = pSerializedRecipe.get("ticks").getAsInt();
|
||||||
|
return new InsolatorRecipe(pRecipeId, output, input, fluid, ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -95,7 +108,8 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
|||||||
ItemStack output = pBuffer.readItem();
|
ItemStack output = pBuffer.readItem();
|
||||||
Ingredient input = Ingredient.fromNetwork(pBuffer);
|
Ingredient input = Ingredient.fromNetwork(pBuffer);
|
||||||
FluidStack fluid = pBuffer.readFluidStack();
|
FluidStack fluid = pBuffer.readFluidStack();
|
||||||
return new InsolatorRecipe(pRecipeId, output, input, fluid);
|
int ticks = pBuffer.readInt();
|
||||||
|
return new InsolatorRecipe(pRecipeId, output, input, fluid, ticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -103,6 +117,7 @@ public class InsolatorRecipe implements Recipe<SimpleContainer> {
|
|||||||
pBuffer.writeItemStack(pRecipe.output, false);
|
pBuffer.writeItemStack(pRecipe.output, false);
|
||||||
pRecipe.input.toNetwork(pBuffer);
|
pRecipe.input.toNetwork(pBuffer);
|
||||||
pBuffer.writeFluidStack(pRecipe.fluid);
|
pBuffer.writeFluidStack(pRecipe.fluid);
|
||||||
|
pBuffer.writeInt(pRecipe.ticks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package net.banutama.utamacraft.recipe;
|
|||||||
|
|
||||||
import net.banutama.utamacraft.Utamacraft;
|
import net.banutama.utamacraft.Utamacraft;
|
||||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||||
|
import net.minecraft.world.item.crafting.RecipeType;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
@ -10,11 +11,21 @@ import net.minecraftforge.registries.RegistryObject;
|
|||||||
public class ModRecipes {
|
public class ModRecipes {
|
||||||
public static final DeferredRegister<RecipeSerializer<?>> SERIALIZERS =
|
public static final DeferredRegister<RecipeSerializer<?>> SERIALIZERS =
|
||||||
DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Utamacraft.MOD_ID);
|
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 =
|
public static final RegistryObject<RecipeSerializer<InsolatorRecipe>> INSOLATOR_SERIALIZER =
|
||||||
SERIALIZERS.register("insolator", () -> InsolatorRecipe.Serializer.INSTANCE);
|
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) {
|
public static void register(IEventBus bus) {
|
||||||
SERIALIZERS.register(bus);
|
SERIALIZERS.register(bus);
|
||||||
|
TYPES.register(bus);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package net.banutama.utamacraft.screen;
|
|||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import net.banutama.utamacraft.Utamacraft;
|
import net.banutama.utamacraft.Utamacraft;
|
||||||
import net.banutama.utamacraft.block.entity.InsolatorBlockEntity;
|
|
||||||
import net.banutama.utamacraft.screen.utils.FluidSprite;
|
import net.banutama.utamacraft.screen.utils.FluidSprite;
|
||||||
import net.banutama.utamacraft.screen.utils.MouseUtils;
|
import net.banutama.utamacraft.screen.utils.MouseUtils;
|
||||||
import net.banutama.utamacraft.screen.utils.TiledSprite;
|
import net.banutama.utamacraft.screen.utils.TiledSprite;
|
||||||
@ -104,8 +103,11 @@ public class InsolatorScreen extends AbstractContainerScreen<InsolatorMenu> {
|
|||||||
|
|
||||||
private void renderProgressArrow(PoseStack stack, int x, int y) {
|
private void renderProgressArrow(PoseStack stack, int x, int y) {
|
||||||
if (menu.getBlockEntity().getActive()) {
|
if (menu.getBlockEntity().getActive()) {
|
||||||
float ratio = (float)menu.getBlockEntity().getProgress() / (float)InsolatorBlockEntity.MAX_PROGRESS;
|
int ticks = menu.getBlockEntity().getTicks();
|
||||||
blit(stack, x + 90, y + 33, 176, 0, 8, (int)(25.0f * ratio));
|
if (ticks != 0) {
|
||||||
|
float ratio = (float)menu.getBlockEntity().getProgress() / (float)ticks;
|
||||||
|
blit(stack, x + 90, y + 33, 176, 0, 8, (int)(25.0f * ratio));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package net.banutama.utamacraft.world.feature;
|
||||||
|
|
||||||
|
import com.google.common.base.Supplier;
|
||||||
|
import com.google.common.base.Suppliers;
|
||||||
|
import net.banutama.utamacraft.Utamacraft;
|
||||||
|
import net.banutama.utamacraft.block.custom.ModBlocks;
|
||||||
|
import net.minecraft.core.Registry;
|
||||||
|
import net.minecraft.data.worldgen.features.OreFeatures;
|
||||||
|
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
||||||
|
import net.minecraft.world.level.levelgen.feature.Feature;
|
||||||
|
import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ModConfiguredFeatures {
|
||||||
|
public static final DeferredRegister<ConfiguredFeature<?, ?>> CONFIGURED_FEATURES =
|
||||||
|
DeferredRegister.create(Registry.CONFIGURED_FEATURE_REGISTRY, Utamacraft.MOD_ID);
|
||||||
|
|
||||||
|
public static final Supplier<List<OreConfiguration.TargetBlockState>> OVERWORLD_TUNGSTEN_ORES =
|
||||||
|
Suppliers.memoize(() -> {
|
||||||
|
return List.of(
|
||||||
|
OreConfiguration.target(OreFeatures.STONE_ORE_REPLACEABLES, ModBlocks.TUNGSTEN_ORE.get().defaultBlockState()),
|
||||||
|
OreConfiguration.target(OreFeatures.DEEPSLATE_ORE_REPLACEABLES, ModBlocks.DEEPSLATE_TUNGSTEN_ORE.get().defaultBlockState())
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
public static final RegistryObject<ConfiguredFeature<?, ?>> TUNGSTEN_ORE =
|
||||||
|
CONFIGURED_FEATURES.register("tungsten_ore", () -> {
|
||||||
|
return new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(OVERWORLD_TUNGSTEN_ORES.get(), 7));
|
||||||
|
});
|
||||||
|
|
||||||
|
public static void register(IEventBus bus) {
|
||||||
|
CONFIGURED_FEATURES.register(bus);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package net.banutama.utamacraft.world.feature;
|
||||||
|
|
||||||
|
|
||||||
|
import net.banutama.utamacraft.Utamacraft;
|
||||||
|
import net.minecraft.core.Registry;
|
||||||
|
import net.minecraft.world.level.levelgen.VerticalAnchor;
|
||||||
|
import net.minecraft.world.level.levelgen.placement.*;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ModPlacedFeatures {
|
||||||
|
public static final DeferredRegister<PlacedFeature> PLACED_FEATURES =
|
||||||
|
DeferredRegister.create(Registry.PLACED_FEATURE_REGISTRY, Utamacraft.MOD_ID);
|
||||||
|
|
||||||
|
public static final RegistryObject<PlacedFeature> TUNGSTEN_ORE_PLACED =
|
||||||
|
PLACED_FEATURES.register("tungsten_ore_placed", () -> new PlacedFeature(
|
||||||
|
ModConfiguredFeatures.TUNGSTEN_ORE.getHolder().get(),
|
||||||
|
commonOrePlacement(7,
|
||||||
|
HeightRangePlacement.triangle(
|
||||||
|
VerticalAnchor.aboveBottom(-80),
|
||||||
|
VerticalAnchor.aboveBottom(80)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
public static void register(IEventBus bus) {
|
||||||
|
PLACED_FEATURES.register(bus);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<PlacementModifier> commonOrePlacement(int veinsPerChunk, PlacementModifier modifier) {
|
||||||
|
return orePlacement(CountPlacement.of(veinsPerChunk), modifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<PlacementModifier> orePlacement(PlacementModifier a, PlacementModifier b) {
|
||||||
|
return List.of(a, InSquarePlacement.spread(), b, BiomeFilter.biome());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": { "model": "utamacraft:block/deepslate_tungsten_ore" }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": { "model": "utamacraft:block/tungsten_ore" }
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
"block.utamacraft.deepslate_tungsten_ore": "Deepslate Tungsten Ore",
|
||||||
"block.utamacraft.ethereal_glass": "Ethereal Glass",
|
"block.utamacraft.ethereal_glass": "Ethereal Glass",
|
||||||
"block.utamacraft.insolator": "Insolator",
|
"block.utamacraft.insolator": "Insolator",
|
||||||
"block.utamacraft.tinted_ethereal_glass": "Tinted Ethereal Glass",
|
"block.utamacraft.tinted_ethereal_glass": "Tinted Ethereal Glass",
|
||||||
"block.utamacraft.tungsten_block": "Tungsten Block",
|
"block.utamacraft.tungsten_block": "Tungsten Block",
|
||||||
|
"block.utamacraft.tungsten_ore": "Tungsten Ore",
|
||||||
"block_entity.utamacraft.insolator": "Insolator",
|
"block_entity.utamacraft.insolator": "Insolator",
|
||||||
"item.utamacraft.bulb": "Bulb",
|
"item.utamacraft.bulb": "Bulb",
|
||||||
"item.utamacraft.fiber_glass": "Fiberglass",
|
"item.utamacraft.fiber_glass": "Fiberglass",
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "utamacraft:block/deepslate_tungsten_ore"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "utamacraft:block/tungsten_ore"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"parent": "utamacraft:block/deepslate_tungsten_ore"
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"parent": "utamacraft:block/tungsten_ore"
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"utamacraft:tungsten_ore",
|
||||||
|
"utamacraft:deepslate_tungsten_ore",
|
||||||
|
"utamacraft:tungsten_block"
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"utamacraft:deepslate_tungsten_ore"
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"type": "forge:add_features",
|
||||||
|
"biomes": "#minecraft:is_overworld",
|
||||||
|
"features": "utamacraft:tungsten_ore_placed",
|
||||||
|
"step": "underground_ores"
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:alternatives",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "utamacraft:deepslate_tungsten_ore"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"function": "minecraft:set_count",
|
||||||
|
"count": {
|
||||||
|
"type": "minecraft:uniform",
|
||||||
|
"min": 2.0,
|
||||||
|
"max": 5.0
|
||||||
|
},
|
||||||
|
"add": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "minecraft:apply_bonus",
|
||||||
|
"enchantment": "minecraft:fortune",
|
||||||
|
"formula": "minecraft:ore_drops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "minecraft:explosion_decay"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "utamacraft:raw_tungsten"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "utamacraft:tinted_ethereal_glass"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "utamacraft:tungsten_block"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:alternatives",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "utamacraft:tungsten_ore"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"function": "minecraft:set_count",
|
||||||
|
"count": {
|
||||||
|
"type": "minecraft:uniform",
|
||||||
|
"min": 2.0,
|
||||||
|
"max": 5.0
|
||||||
|
},
|
||||||
|
"add": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "minecraft:apply_bonus",
|
||||||
|
"enchantment": "minecraft:fortune",
|
||||||
|
"formula": "minecraft:ore_drops"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "minecraft:explosion_decay"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "utamacraft:raw_tungsten"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:acacia_leaves"
|
"item": "minecraft:acacia_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:acacia_leaves",
|
"item": "minecraft:acacia_leaves",
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:acacia_sapling"
|
"item": "minecraft:acacia_sapling"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:acacia_sapling",
|
"item": "minecraft:acacia_sapling",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:allium"
|
"item": "minecraft:allium"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:azalea"
|
"item": "minecraft:azalea"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:azalea_leaves"
|
"item": "minecraft:azalea_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:azalea_leaves",
|
"item": "minecraft:azalea_leaves",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:azure_bluet"
|
"item": "minecraft:azure_bluet"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:bamboo"
|
"item": "minecraft:bamboo"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:beetroot_seeds"
|
"item": "minecraft:beetroot_seeds"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:big_dripleaf"
|
"item": "minecraft:big_dripleaf"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:birch_leaves"
|
"item": "minecraft:birch_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:birch_leaves",
|
"item": "minecraft:birch_leaves",
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:birch_sapling"
|
"item": "minecraft:birch_sapling"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:birch_sapling",
|
"item": "minecraft:birch_sapling",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:blue_orchid"
|
"item": "minecraft:blue_orchid"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:brown_mushroom"
|
"item": "minecraft:brown_mushroom"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:cactus"
|
"item": "minecraft:cactus"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:chorus_flower"
|
"item": "minecraft:chorus_flower"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:cornflower"
|
"item": "minecraft:cornflower"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:crimson_fungus"
|
"item": "minecraft:crimson_fungus"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:crimson_roots"
|
"item": "minecraft:crimson_roots"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:dandelion"
|
"item": "minecraft:dandelion"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:dark_oak_leaves"
|
"item": "minecraft:dark_oak_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:dark_oak_leaves",
|
"item": "minecraft:dark_oak_leaves",
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:dark_oak_sapling"
|
"item": "minecraft:dark_oak_sapling"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:dark_oak_sapling",
|
"item": "minecraft:dark_oak_sapling",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:fern"
|
"item": "minecraft:fern"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:flowering_azalea"
|
"item": "minecraft:flowering_azalea"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:flowering_azalea_leaves"
|
"item": "minecraft:flowering_azalea_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:flowering_azalea_leaves",
|
"item": "minecraft:flowering_azalea_leaves",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:glow_lichen"
|
"item": "minecraft:glow_lichen"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:grass"
|
"item": "minecraft:grass"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:hanging_roots"
|
"item": "minecraft:hanging_roots"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:jungle_leaves"
|
"item": "minecraft:jungle_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:jungle_leaves",
|
"item": "minecraft:jungle_leaves",
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:jungle_sapling"
|
"item": "minecraft:jungle_sapling"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:jungle_sapling",
|
"item": "minecraft:jungle_sapling",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:kelp"
|
"item": "minecraft:kelp"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:large_fern"
|
"item": "minecraft:large_fern"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:lilac"
|
"item": "minecraft:lilac"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:lily_of_the_valley"
|
"item": "minecraft:lily_of_the_valley"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:mangrove_leaves"
|
"item": "minecraft:mangrove_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:mangrove_leaves",
|
"item": "minecraft:mangrove_leaves",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:melon"
|
"item": "minecraft:melon"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:moss_block"
|
"item": "minecraft:moss_block"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:moss_carpet"
|
"item": "minecraft:moss_carpet"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:nether_sprouts"
|
"item": "minecraft:nether_sprouts"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:nether_wart"
|
"item": "minecraft:nether_wart"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:oak_leaves"
|
"item": "minecraft:oak_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:oak_leaves",
|
"item": "minecraft:oak_leaves",
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:oak_sapling"
|
"item": "minecraft:oak_sapling"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:oak_sapling",
|
"item": "minecraft:oak_sapling",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:orange_tulip"
|
"item": "minecraft:orange_tulip"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:oxeye_daisy"
|
"item": "minecraft:oxeye_daisy"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:peony"
|
"item": "minecraft:peony"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:pink_tulip"
|
"item": "minecraft:pink_tulip"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:poppy"
|
"item": "minecraft:poppy"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:potato"
|
"item": "minecraft:potato"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:pumpkin"
|
"item": "minecraft:pumpkin"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:red_mushroom"
|
"item": "minecraft:red_mushroom"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:red_tulip"
|
"item": "minecraft:red_tulip"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:rose_bush"
|
"item": "minecraft:rose_bush"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:sea_pickle"
|
"item": "minecraft:sea_pickle"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:seagrass"
|
"item": "minecraft:seagrass"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:small_dripleaf"
|
"item": "minecraft:small_dripleaf"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:spore_blossom"
|
"item": "minecraft:spore_blossom"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:spruce_leaves"
|
"item": "minecraft:spruce_leaves"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:spruce_leaves",
|
"item": "minecraft:spruce_leaves",
|
||||||
|
@ -3,9 +3,10 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:spruce_sapling"
|
"item": "minecraft:spruce_sapling"
|
||||||
},
|
},
|
||||||
|
"ticks": 1000,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 1000
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"item": "minecraft:spruce_sapling",
|
"item": "minecraft:spruce_sapling",
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:sugar_cane"
|
"item": "minecraft:sugar_cane"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:sunflower"
|
"item": "minecraft:sunflower"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:tall_grass"
|
"item": "minecraft:tall_grass"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:twisting_vines"
|
"item": "minecraft:twisting_vines"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:vine"
|
"item": "minecraft:vine"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:warped_fungus"
|
"item": "minecraft:warped_fungus"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:warped_roots"
|
"item": "minecraft:warped_roots"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:weeping_vines"
|
"item": "minecraft:weeping_vines"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:wheat_seeds"
|
"item": "minecraft:wheat_seeds"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:white_tulip"
|
"item": "minecraft:white_tulip"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
"input": {
|
"input": {
|
||||||
"item": "minecraft:wither_rose"
|
"item": "minecraft:wither_rose"
|
||||||
},
|
},
|
||||||
|
"ticks": 500,
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": 500
|
||||||
|
@ -77,15 +77,33 @@ ITEMS = [
|
|||||||
# "minecraft:torchflower", TODO: 1.20
|
# "minecraft:torchflower", TODO: 1.20
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def basicTicksFor(item: str) -> int:
|
||||||
|
if item.endswith("_leaves") or item.endswith("_sapling"):
|
||||||
|
return 1000
|
||||||
|
return 500
|
||||||
|
|
||||||
|
def basicWaterFor(item: str) -> int:
|
||||||
|
if item.endswith("_leaves") or item.endswith("_sapling"):
|
||||||
|
return 1000
|
||||||
|
return 500
|
||||||
|
|
||||||
for item in ITEMS:
|
for item in ITEMS:
|
||||||
namespace, item_name = item.split(":")
|
namespace, item_name = item.split(":")
|
||||||
with open(f"src/main/resources/data/utamacraft/recipes/insolator_{namespace}_{item_name}.json", "w") as fp:
|
with open(f"src/main/resources/data/utamacraft/recipes/insolator_{namespace}_{item_name}.json", "w") as fp:
|
||||||
fp.write(json.dumps({
|
fp.write(json.dumps({
|
||||||
"type": "utamacraft:insolator",
|
"type": "utamacraft:insolator",
|
||||||
"input": { "item": item },
|
"input": { "item": item },
|
||||||
|
"ticks": basicTicksFor(item),
|
||||||
"fluid": {
|
"fluid": {
|
||||||
"FluidName": "minecraft:water",
|
"FluidName": "minecraft:water",
|
||||||
"Amount": 500
|
"Amount": basicWaterFor(item)
|
||||||
},
|
},
|
||||||
"output": { "item": item, "count": 2 }
|
"output": { "item": item, "count": 2 }
|
||||||
}, indent=2))
|
}, indent=2))
|
||||||
|
|
||||||
|
with open("insolator-recipes.md", "w") as fp:
|
||||||
|
for item in ITEMS:
|
||||||
|
ticks = basicTicksFor(item)
|
||||||
|
energy = 32 * ticks
|
||||||
|
water = basicWaterFor(item)
|
||||||
|
fp.write(f"| [{item}] | {water} | {energy} | {ticks} | {ticks / 20} |\n")
|
||||||
|
Loading…
Reference in New Issue
Block a user