Skip to content

Commit

Permalink
progress on Arcane Resonator, a redstone component detecting spell usage
Browse files Browse the repository at this point in the history
reoseah committed Nov 27, 2024
1 parent 0f84ba8 commit 02f780e
Showing 30 changed files with 355 additions and 15 deletions.
6 changes: 6 additions & 0 deletions src/main/java/io/github/reoseah/magisterium/Magisterium.java
Original file line number Diff line number Diff line change
@@ -2,6 +2,8 @@

import com.google.common.collect.ImmutableSet;
import io.github.reoseah.magisterium.block.*;
import io.github.reoseah.magisterium.block.entity.ArcaneResonatorBlockEntity;
import io.github.reoseah.magisterium.block.entity.IllusoryWallBlockEntity;
import io.github.reoseah.magisterium.block.entity.MagicBarrierBlockEntity;
import io.github.reoseah.magisterium.data.BookLoader;
import io.github.reoseah.magisterium.data.SpellEffectLoader;
@@ -64,11 +66,14 @@ public void onInitialize() {
Registry.register(Registries.BLOCK, "magisterium:illusory_wall", IllusoryWallBlock.INSTANCE);
Registry.register(Registries.BLOCK, "magisterium:arcane_lift", ArcaneLiftBlock.INSTANCE);
Registry.register(Registries.BLOCK, "magisterium:magic_barrier", MagicBarrierBlock.INSTANCE);
Registry.register(Registries.BLOCK, "magisterium:arcane_resonator", ArcaneResonatorBlock.INSTANCE);

Registry.register(Registries.BLOCK_ENTITY_TYPE, "magisterium:illusory_wall", IllusoryWallBlockEntity.TYPE);
Registry.register(Registries.BLOCK_ENTITY_TYPE, "magisterium:magic_barrier", MagicBarrierBlockEntity.TYPE);
Registry.register(Registries.BLOCK_ENTITY_TYPE, "magisterium:arcane_resonator", ArcaneResonatorBlockEntity.TYPE);

Registry.register(Registries.ITEM, "magisterium:arcane_table", ArcaneTableBlock.ITEM);
Registry.register(Registries.ITEM, "magisterium:arcane_resonator", ArcaneResonatorBlock.ITEM);
Registry.register(Registries.ITEM, "magisterium:spell_book", SpellBookItem.SPELL_BOOK);
Registry.register(Registries.ITEM, "magisterium:elements_of_pyromancy", SpellBookItem.ELEMENTS_OF_PYROMANCY);
Registry.register(Registries.ITEM, "magisterium:lesser_arcanum", SpellBookItem.LESSER_ARCANUM);
@@ -98,6 +103,7 @@ public void onInitialize() {
.displayName(Text.translatable("itemGroup.magisterium")) //
.entries((displayContext, entries) -> {
entries.add(ArcaneTableBlock.INSTANCE);
entries.add(ArcaneResonatorBlock.INSTANCE);
entries.add(SpellBookItem.SPELL_BOOK);

var filledBook = new ItemStack(SpellBookItem.SPELL_BOOK);
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package io.github.reoseah.magisterium;

import io.github.reoseah.magisterium.block.*;
import io.github.reoseah.magisterium.block.ArcaneTableBlock;
import io.github.reoseah.magisterium.block.GlyphBlock;
import io.github.reoseah.magisterium.block.MagicBarrierBlock;
import io.github.reoseah.magisterium.block.entity.ArcaneResonatorBlockEntity;
import io.github.reoseah.magisterium.block.entity.IllusoryWallBlockEntity;
import io.github.reoseah.magisterium.client.render.ArcaneResonatorRenderer;
import io.github.reoseah.magisterium.client.render.IllusoryWallBlockEntityRenderer;
import io.github.reoseah.magisterium.data.BookLoader;
import io.github.reoseah.magisterium.data.SpellPage;
import io.github.reoseah.magisterium.network.SpellParticlePayload;
@@ -15,6 +21,7 @@
import io.github.reoseah.magisterium.screen.SpellBookScreenHandler;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
@@ -36,6 +43,12 @@ public void onInitializeClient() {
HandledScreens.register(ArcaneTableScreenHandler.TYPE, ArcaneTableScreen::new);

BlockEntityRendererFactories.register(IllusoryWallBlockEntity.TYPE, IllusoryWallBlockEntityRenderer::new);
BlockEntityRendererFactories.register(ArcaneResonatorBlockEntity.TYPE, ArcaneResonatorRenderer::new);

ModelLoadingPlugin.register(pluginContext -> {
pluginContext.addModels(Identifier.of("magisterium:block/arcane_resonator_crystal"));
pluginContext.addModels(Identifier.of("magisterium:block/arcane_resonator_crystal_on"));
});

ParticleFactoryRegistry.getInstance().register(MagisteriumParticles.ENERGY, EnergyParticle.Factory::new);
ParticleFactoryRegistry.getInstance().register(MagisteriumParticles.GLYPH_A, GlyphParticle.Factory::new);
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
package io.github.reoseah.magisterium.block;

import com.mojang.serialization.MapCodec;
import io.github.reoseah.magisterium.block.entity.ArcaneResonatorBlockEntity;
import net.minecraft.block.*;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.ai.pathing.NavigationType;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.particle.DustParticleEffect;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.state.StateManager;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.Properties;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.random.Random;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;
import net.minecraft.world.WorldView;
import org.jetbrains.annotations.Nullable;

public class ArcaneResonatorBlock extends BlockWithEntity {
public static final VoxelShape SHAPE = Block.createCuboidShape(0, 0, 0, 16, 2, 16);
public static final BooleanProperty POWERED = Properties.POWERED;
public static final MapCodec<ArcaneResonatorBlock> CODEC = createCodec(ArcaneResonatorBlock::new);

public static final Block INSTANCE = new ArcaneResonatorBlock(Settings.create() //
.breakInstantly() //
.nonOpaque() //
.luminance(state -> state.get(POWERED) ? 13 : 0) //
.strength(0) //
.registryKey(RegistryKey.of(RegistryKeys.BLOCK, Identifier.of("magisterium", "arcane_resonator"))));
public static final Item ITEM = new BlockItem(INSTANCE, new Item.Settings() //
.registryKey(RegistryKey.of(RegistryKeys.ITEM, Identifier.of("magisterium", "arcane_resonator"))) //
.useBlockPrefixedTranslationKey());

public ArcaneResonatorBlock(Settings settings) {
super(settings);
this.setDefaultState(this.stateManager.getDefaultState().with(POWERED, false));
}

@Override
protected MapCodec<? extends BlockWithEntity> getCodec() {
return CODEC;
}

@Override
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
builder.add(POWERED);
}

@Override
protected boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) {
BlockPos blockPos = pos.down();
return this.canPlaceAbove(world, blockPos, world.getBlockState(blockPos));
}

protected boolean canPlaceAbove(WorldView world, BlockPos pos, BlockState state) {
return state.isSideSolid(world, pos, Direction.UP, SideShapeType.RIGID);
}

@Override
protected VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
return SHAPE;
}

@Override
protected boolean emitsRedstonePower(BlockState state) {
return true;
}

@Override
protected BlockRenderType getRenderType(BlockState state) {
return BlockRenderType.MODEL;
}

@Override
public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) {
if (state.get(POWERED)) {
double x = pos.getX() + 0.5 + (random.nextDouble() - 0.5);
double y = pos.getY() + 0.4 + (random.nextDouble() - 0.5);
double z = pos.getZ() + 0.5 + (random.nextDouble() - 0.5);

world.addParticle(DustParticleEffect.DEFAULT, x, y, z, 0, 0, 0);
}
}

@Override
public @Nullable BlockEntity createBlockEntity(BlockPos pos, BlockState state) {
return new ArcaneResonatorBlockEntity(pos, state);
}

private static void updateNeighbors(World world, BlockPos pos, BlockState state) {
var block = state.getBlock();
world.updateNeighborsAlways(pos, block);
world.updateNeighborsAlways(pos.down(), block);
}

@Override
protected int getWeakRedstonePower(BlockState state, BlockView world, BlockPos pos, Direction direction) {
return state.get(POWERED) ? 15 : 0;
}

@Override
public int getStrongRedstonePower(BlockState state, BlockView world, BlockPos pos, Direction direction) {
return direction == Direction.UP ? state.getWeakRedstonePower(world, pos, direction) : 0;
}

@Override
protected boolean canPathfindThrough(BlockState state, NavigationType type) {
return false;
}

@Override
protected boolean hasSidedTransparency(BlockState state) {
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.github.reoseah.magisterium.block;

import com.mojang.serialization.MapCodec;
import io.github.reoseah.magisterium.block.entity.IllusoryWallBlockEntity;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.BlockWithEntity;
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.github.reoseah.magisterium.block.entity;

import io.github.reoseah.magisterium.block.ArcaneResonatorBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.util.math.BlockPos;

public class ArcaneResonatorBlockEntity extends BlockEntity {
public static final BlockEntityType<ArcaneResonatorBlockEntity> TYPE = FabricBlockEntityTypeBuilder.create(ArcaneResonatorBlockEntity::new, ArcaneResonatorBlock.INSTANCE).build();

public ArcaneResonatorBlockEntity(BlockPos pos, BlockState state) {
super(TYPE, pos, state);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.reoseah.magisterium.block;
package io.github.reoseah.magisterium.block.entity;

import io.github.reoseah.magisterium.block.IllusoryWallBlock;
import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package io.github.reoseah.magisterium.client.render;

import io.github.reoseah.magisterium.block.ArcaneResonatorBlock;
import io.github.reoseah.magisterium.block.entity.ArcaneResonatorBlockEntity;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderLayers;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.block.BlockRenderManager;
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.random.Random;

public class ArcaneResonatorRenderer implements BlockEntityRenderer<ArcaneResonatorBlockEntity> {
public static final Identifier CRYSTAL = Identifier.of("magisterium:block/arcane_resonator_crystal");
public static final Identifier CRYSTAL_ON = Identifier.of("magisterium:block/arcane_resonator_crystal_on");

private final BlockRenderManager renderManager;

public ArcaneResonatorRenderer(BlockEntityRendererFactory.Context ctx) {
this.renderManager = ctx.getRenderManager();
}

@Override
public void render(ArcaneResonatorBlockEntity entity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) {
boolean powered = entity.getCachedState().get(ArcaneResonatorBlock.POWERED);
var model = MinecraftClient.getInstance().getBakedModelManager().getModel(powered ? CRYSTAL_ON : CRYSTAL);
var world = entity.getWorld();
var pos = entity.getPos();
matrices.push();
matrices.translate(.5F, MathHelper.sin((world.getTime() + tickDelta) / 20) * .1F, .5F);
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(world.getTime() + tickDelta));
matrices.translate(-.5F, 0, -.5F);
this.renderManager.getModelRenderer().render(world, model, entity.getCachedState(), pos, matrices, vertexConsumers.getBuffer(RenderLayers.getMovingBlockLayer(entity.getCachedState())), false, Random.create(), 1, OverlayTexture.DEFAULT_UV);
matrices.pop();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.reoseah.magisterium.block;
package io.github.reoseah.magisterium.client.render;

import io.github.reoseah.magisterium.block.entity.IllusoryWallBlockEntity;
import net.minecraft.block.BlockRenderType;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderLayers;
@@ -11,10 +12,10 @@
import net.minecraft.util.math.random.Random;

public class IllusoryWallBlockEntityRenderer implements BlockEntityRenderer<IllusoryWallBlockEntity> {
private final BlockRenderManager blockRenderManager;
private final BlockRenderManager renderManager;

public IllusoryWallBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) {
this.blockRenderManager = ctx.getRenderManager();
this.renderManager = ctx.getRenderManager();
}

@Override
@@ -23,7 +24,7 @@ public void render(IllusoryWallBlockEntity entity, float tickDelta, MatrixStack
if (state.getRenderType() == BlockRenderType.MODEL) {
var world = entity.getWorld();
var pos = entity.getPos();
this.blockRenderManager.getModelRenderer().render(world, this.blockRenderManager.getModel(state), state, pos, matrices, vertexConsumers.getBuffer(RenderLayers.getMovingBlockLayer(state)), false, Random.create(), 1, OverlayTexture.DEFAULT_UV);
this.renderManager.getModelRenderer().render(world, this.renderManager.getModel(state), state, pos, matrices, vertexConsumers.getBuffer(RenderLayers.getMovingBlockLayer(state)), false, Random.create(), 1, OverlayTexture.DEFAULT_UV);
}
}
}
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import io.github.reoseah.magisterium.block.IllusoryWallBlock;
import io.github.reoseah.magisterium.block.IllusoryWallBlockEntity;
import io.github.reoseah.magisterium.block.entity.IllusoryWallBlockEntity;
import io.github.reoseah.magisterium.screen.SpellBookScreenHandler;
import net.minecraft.block.BlockRenderType;
import net.minecraft.block.Blocks;
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"variants": {
"powered=false": {
"model": "magisterium:block/arcane_resonator"
},
"powered=true": {
"model": "magisterium:block/arcane_resonator_on"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"variants": {
"powered=false": {
"model": "magisterium:block/arcane_resonator_crystal"
},
"powered=true": {
"model": "magisterium:block/arcane_resonator_crystal_on"
}
}
}
5 changes: 3 additions & 2 deletions src/main/resources/assets/magisterium/lang/en_us.json
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@
"block.magisterium.glyph": "Arcane Glyph",
"block.magisterium.illusory_wall": "Illusory Wall",
"block.magisterium.arcane_lift": "Arcane Lift",
"block.magisterium.arcane_resonator": "Arcane Resonator",
"item.magisterium.spell_book": "Spell Tome",
"item.magisterium.spell_book.empty": "Empty",
"item.magisterium.spell_book.pages": "%s Entries",
@@ -38,8 +39,8 @@
"magisterium.page.magisterium.awaken_the_flame.heading": "awaken the flame",
"magisterium.page.magisterium.awaken_the_flame.description": "Ignite nearby candles, torches and other kinds of fire bearers and receptacles.",
"magisterium.page.magisterium.awaken_the_flame.spell": "Ignis dormiens, nunc surge!\n\nLumen tibi impero, flammae revelete!",
"magisterium.page.magisterium.quench_the_flame": "Quench the Flame",
"magisterium.page.magisterium.quench_the_flame.heading": "quench the flame",
"magisterium.page.magisterium.quench_the_flame": "Soothe the Flame",
"magisterium.page.magisterium.quench_the_flame.heading": "sooth the flame",
"magisterium.page.magisterium.quench_the_flame.description": "Extinguish nearby candles, torches and other kinds of fire bearers and receptacles.",
"magisterium.page.magisterium.quench_the_flame.spell": "Ignis vivens, nunc quiesce!\n\nLumen tibi negatur, flammae extinguete!",
"magisterium.page.magisterium.glyphic_ignition": "Glyphic Ignition",
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"ambientocclusion": false,
"textures": {
"particle": "magisterium:block/arcane_resonator",
"slab": "block/smooth_stone",
"top": "magisterium:block/arcane_resonator"
},
"elements": [
{
"from": [ 0, 0, 0 ],
"to": [ 16, 2, 16 ],
"faces": {
"down": { "uv": [ 0, 0, 16, 16 ], "texture": "#slab", "cullface": "down" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" },
"north": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "north" },
"south": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "south" },
"west": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "west" },
"east": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "east" }
}
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"ambientocclusion": false,
"texture_size": [32, 32],
"textures": {
"0": "magisterium:block/arcane_resonator_crystal",
"particle": "magisterium:block/arcane_resonator_crystal"
},
"elements": [
{
"from": [4, 5, 4],
"to": [12, 13, 12],
"faces": {
"north": {"uv": [4, 4, 8, 8], "texture": "#0"},
"east": {"uv": [8, 4, 12, 8], "texture": "#0"},
"south": {"uv": [12, 4, 16, 8], "texture": "#0"},
"west": {"uv": [0, 4, 4, 8], "texture": "#0"},
"up": {"uv": [4, 0, 8, 4], "texture": "#0"},
"down": {"uv": [8, 0, 12, 4], "texture": "#0"}
}
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"credit": "Made with Blockbench",
"ambientocclusion": false,
"texture_size": [32, 32],
"textures": {
"0": "magisterium:block/arcane_resonator_crystal",
"particle": "magisterium:block/arcane_resonator_crystal"
},
"elements": [
{
"from": [4, 5, 4],
"to": [12, 13, 12],
"faces": {
"north": {"uv": [4, 12, 8, 16], "texture": "#0"},
"east": {"uv": [8, 12, 12, 16], "texture": "#0"},
"south": {"uv": [12, 12, 16, 16], "texture": "#0"},
"west": {"uv": [0, 12, 4, 16], "texture": "#0"},
"up": {"uv": [4, 8, 8, 12], "texture": "#0"},
"down": {"uv": [8, 8, 12, 12], "texture": "#0"}
}
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"ambientocclusion": false,
"textures": {
"particle": "magisterium:block/arcane_resonator_on",
"slab": "block/smooth_stone",
"top": "magisterium:block/arcane_resonator_on"
},
"elements": [
{
"from": [ 0, 0, 0 ],
"to": [ 16, 2, 16 ],
"faces": {
"down": { "uv": [ 0, 0, 16, 16 ], "texture": "#slab", "cullface": "down" },
"up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" },
"north": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "north" },
"south": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "south" },
"west": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "west" },
"east": { "uv": [ 0, 14, 16, 16 ], "texture": "#slab", "cullface": "east" }
}
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "magisterium:item/arcane_resonator"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "magisterium:arcane_resonator"
}
],
"rolls": 1.0
}
],
"random_sequence": "magisterium:blocks/arcane_resonator"
}
Original file line number Diff line number Diff line change
@@ -44,19 +44,19 @@
"x": 33,
"y": 0,
"ingredient": "#magisterium:cold_snap_ingredients",
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/wind"
},
{
"x": 51,
"y": 0,
"ingredient": "#magisterium:cold_snap_ingredients",
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/wind"
},
{
"x": 42,
"y": 18,
"ingredient": "#magisterium:cold_snap_ingredients",
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/wind"
}
]
},
Original file line number Diff line number Diff line change
@@ -44,19 +44,20 @@
"x": 42,
"y": 0,
"ingredient": "#magisterium:conflagrate_ingredients",
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/fire"
},
{
"x": 33,
"y": 18,
"ingredient": "#magisterium:conflagrate_ingredients",
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/fire"

},
{
"x": 51,
"y": 18,
"ingredient": "#magisterium:conflagrate_ingredients",
"background": "magisterium:item/placeholder/question_mark"
"background": "magisterium:item/placeholder/fire"
}
]
},
Binary file added unused_assets/Sprite-0001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added unused_assets/jukebox_top.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 02f780e

Please sign in to comment.