Initial Campfire Work

This commit is contained in:
2022-08-27 20:42:12 +02:00
parent 55223057f7
commit e1b7ae442c
115 changed files with 1331 additions and 6 deletions

View File

@@ -7,7 +7,7 @@ import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
import me.hypherionmc.nightconfig.core.conversion.Path;
import me.hypherionmc.nightconfig.core.conversion.SpecComment;
public class HyperLightingConfig extends ModuleConfig {
public class HyperLightingClientConfig extends ModuleConfig {
@Path("torchConfig")
@SpecComment("Torch Configuration")
@@ -19,6 +19,13 @@ public class HyperLightingConfig extends ModuleConfig {
@SubConfig
public LanternConfig lanternConfig = new LanternConfig();
@Path("campfireConfig")
@SpecComment("Campfire Configuration")
@SubConfig
public CampfireConfig campfireConfig = new CampfireConfig();
public HyperLightingClientConfig() {
super(Constants.MOD_ID, "hyperlighting-client");
@Path("candleConfig")
@SpecComment("Candle Configuration")
@SubConfig
@@ -42,6 +49,10 @@ public class HyperLightingConfig extends ModuleConfig {
@Path("requiresTool")
@SpecComment("Is the Torch Lighter tool needed to light torches")
public boolean requiresTool = true;
@Path("coloredLighting")
@SpecComment("Should Torches emit colored Lighting when SHIMMER is installed")
public boolean coloredLighting = true;
}
public static class LanternConfig {
@@ -52,6 +63,24 @@ public class HyperLightingConfig extends ModuleConfig {
@Path("requiresTool")
@SpecComment("Is the Torch Lighter tool needed to light Lanterns")
public boolean requiresTool = true;
@Path("coloredLighting")
@SpecComment("Should Lanterns emit colored Lighting when SHIMMER is installed")
public boolean coloredLighting = true;
}
public static class CampfireConfig {
@Path("litByDefault")
@SpecComment("Should Campfires be lit by default when placed")
public boolean litByDefault = false;
@Path("requiresTool")
@SpecComment("Is the Torch Lighter tool needed to light Campfires")
public boolean requiresTool = true;
@Path("coloredLighting")
@SpecComment("Should Campfires emit colored Lighting when SHIMMER is installed")
public boolean coloredLighting = true;
}
public static class CandleConfig {
@@ -62,5 +91,9 @@ public class HyperLightingConfig extends ModuleConfig {
@Path("requiresTool")
@SpecComment("Is the Torch Lighter tool needed to light Candles")
public boolean requiresTool = true;
@Path("coloredLighting")
@SpecComment("Should Candles emit colored Lighting when SHIMMER is installed")
public boolean coloredLighting = true;
}
}

View File

@@ -9,6 +9,7 @@ import me.hypherionmc.hyperlighting.common.init.HLBlocks;
import me.hypherionmc.hyperlighting.common.init.HLItems;
import me.hypherionmc.hyperlighting.integration.HyperLightingIntegrations;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
/**
* @author HypherionSA

View File

@@ -0,0 +1,51 @@
package me.hypherionmc.hyperlighting.client.renderer.blockentity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import me.hypherionmc.hyperlighting.common.blockentities.AdvancedCampfireBlockEntity;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedCampfire;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.client.renderer.entity.ItemRenderer;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.ItemStack;
/**
* @author HypherionSA
* @date 27/08/2022
*/
public class AdvancedCampfireRenderer implements BlockEntityRenderer<AdvancedCampfireBlockEntity> {
private static final float SIZE = 0.375F;
private final ItemRenderer itemRenderer;
public AdvancedCampfireRenderer(BlockEntityRendererProvider.Context context) {
this.itemRenderer = context.getItemRenderer();
}
@Override
public void render(AdvancedCampfireBlockEntity campfire, float tick, PoseStack poseStack, MultiBufferSource bufferSource, int combinedLight, int overlay) {
Direction direction = campfire.getBlockState().getValue(AdvancedCampfire.FACING);
NonNullList<ItemStack> items = campfire.getItems();
int blockPos = (int)campfire.getBlockPos().asLong();
for(int i = 0; i < items.size(); ++i) {
ItemStack $$10 = items.get(i);
if ($$10 != ItemStack.EMPTY) {
poseStack.pushPose();
poseStack.translate(0.5, 0.44921875, 0.5);
Direction direction1 = Direction.from2DDataValue((i + direction.get2DDataValue()) % 4);
float rot = -direction1.toYRot();
poseStack.mulPose(Vector3f.YP.rotationDegrees(rot));
poseStack.mulPose(Vector3f.XP.rotationDegrees(90.0F));
poseStack.translate(-0.3125, -0.3125, 0.0);
poseStack.scale(0.375F, 0.375F, 0.375F);
this.itemRenderer.renderStatic($$10, ItemTransforms.TransformType.FIXED, combinedLight, overlay, poseStack, bufferSource, blockPos + i);
poseStack.popPose();
}
}
}
}

View File

@@ -0,0 +1,191 @@
package me.hypherionmc.hyperlighting.common.blockentities;
import me.hypherionmc.craterlib.api.blockentities.ISidedTickable;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedCampfire;
import me.hypherionmc.hyperlighting.common.init.HLBlockEntities;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.NonNullList;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.util.Mth;
import net.minecraft.util.RandomSource;
import net.minecraft.world.*;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.CampfireCookingRecipe;
import net.minecraft.world.item.crafting.RecipeManager;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.gameevent.GameEvent;
import org.jetbrains.annotations.Nullable;
import java.util.Optional;
/**
* @author HypherionSA
* @date 27/08/2022
*/
public class AdvancedCampfireBlockEntity extends BlockEntity implements Clearable, ISidedTickable {
private static final int BURN_COOL_SPEED = 2;
private static final int NUM_SLOTS = 4;
private final NonNullList<ItemStack> items = NonNullList.withSize(4, ItemStack.EMPTY);
private final int[] cookingProgress = new int[4];
private final int[] cookingTime = new int[4];
private final RecipeManager.CachedCheck<Container, CampfireCookingRecipe> quickCheck = RecipeManager.createCheck(RecipeType.CAMPFIRE_COOKING);
public AdvancedCampfireBlockEntity(BlockPos pos, BlockState state) {
super(HLBlockEntities.CAMPFIRE.get(), pos, state);
}
@Override
public void serverTick(Level level, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity) {
boolean isDirty = false;
AdvancedCampfireBlockEntity be = (AdvancedCampfireBlockEntity) blockEntity;
for (int i = 0; i < be.items.size(); i++) {
ItemStack inStack = be.items.get(i);
if (!inStack.isEmpty()) {
isDirty = true;
int time = be.cookingProgress[i]++;
if (be.cookingProgress[i] >= be.cookingTime[i]) {
Container container = new SimpleContainer(inStack);
ItemStack outStack = be.quickCheck.getRecipeFor(container, level).map(r -> r.assemble(container)).orElse(inStack);
Containers.dropItemStack(level, blockPos.getX(), blockPos.getY(), blockPos.getZ(), outStack);
be.items.set(i, ItemStack.EMPTY);
level.sendBlockUpdated(blockPos, blockState, blockState, 3);
level.gameEvent(GameEvent.BLOCK_CHANGE, blockPos, GameEvent.Context.of(blockState));
}
}
}
if (isDirty) {
setChanged(level, blockPos, blockState);
}
}
public static void cooldownTick(Level level, BlockPos blockPos, BlockState state, AdvancedCampfireBlockEntity be) {
boolean isDirty = false;
for (int i = 0; i < be.items.size(); ++i) {
if (be.cookingProgress[i] > 0) {
isDirty = true;
be.cookingProgress[i] = Mth.clamp(be.cookingProgress[i] - 2, 0, be.cookingTime[i]);
}
}
if (isDirty) {
setChanged(level, blockPos, state);
}
}
@Override
public void clientTick(Level level, BlockPos blockPos, BlockState blockState, BlockEntity blockEntity) {
AdvancedCampfireBlockEntity campfireBlockEntity = (AdvancedCampfireBlockEntity) blockEntity;
RandomSource randomSource = level.random;
int i;
if (randomSource.nextFloat() < 0.11F) {
for(i = 0; i < randomSource.nextInt(2) + 2; ++i) {
AdvancedCampfire.makeParticles(level, blockPos, blockState.getValue(AdvancedCampfire.SIGNAL_FIRE), false);
}
}
i = blockState.getValue(AdvancedCampfire.FACING).get2DDataValue();
for(int j = 0; j < campfireBlockEntity.items.size(); ++j) {
if (!campfireBlockEntity.items.get(j).isEmpty() && randomSource.nextFloat() < 0.2F) {
Direction direction = Direction.from2DDataValue(Math.floorMod(j + i, 4));
float f = 0.3125F;
double d = (double)blockPos.getX() + 0.5 - (double)((float)direction.getStepX() * 0.3125F) + (double)((float)direction.getClockWise().getStepX() * 0.3125F);
double e = (double)blockPos.getY() + 0.5;
double g = (double)blockPos.getZ() + 0.5 - (double)((float)direction.getStepZ() * 0.3125F) + (double)((float)direction.getClockWise().getStepZ() * 0.3125F);
for(int k = 0; k < 4; ++k) {
level.addParticle(ParticleTypes.SMOKE, d, e, g, 0.0, 5.0E-4, 0.0);
}
}
}
}
public NonNullList<ItemStack> getItems() {
return this.items;
}
@Override
public void load(CompoundTag compoundTag) {
super.load(compoundTag);
this.items.clear();
ContainerHelper.loadAllItems(compoundTag, this.items);
int[] is;
if (compoundTag.contains("CookingTimes", 11)) {
is = compoundTag.getIntArray("CookingTimes");
System.arraycopy(is, 0, this.cookingProgress, 0, Math.min(this.cookingTime.length, is.length));
}
if (compoundTag.contains("CookingTotalTimes", 11)) {
is = compoundTag.getIntArray("CookingTotalTimes");
System.arraycopy(is, 0, this.cookingTime, 0, Math.min(this.cookingTime.length, is.length));
}
}
protected void saveAdditional(CompoundTag compoundTag) {
super.saveAdditional(compoundTag);
ContainerHelper.saveAllItems(compoundTag, this.items, true);
compoundTag.putIntArray("CookingTimes", this.cookingProgress);
compoundTag.putIntArray("CookingTotalTimes", this.cookingTime);
}
@Override
public ClientboundBlockEntityDataPacket getUpdatePacket() {
return ClientboundBlockEntityDataPacket.create(this);
}
@Override
public CompoundTag getUpdateTag() {
CompoundTag compoundTag = new CompoundTag();
ContainerHelper.saveAllItems(compoundTag, this.items, true);
return compoundTag;
}
public Optional<CampfireCookingRecipe> getCookableRecipe(ItemStack itemStack) {
return this.items.stream().noneMatch(ItemStack::isEmpty) ? Optional.empty() : this.quickCheck.getRecipeFor(new SimpleContainer(new ItemStack[]{itemStack}), this.level);
}
public boolean placeFood(@Nullable Entity entity, ItemStack itemStack, int i) {
for(int j = 0; j < this.items.size(); ++j) {
ItemStack itemStack2 = this.items.get(j);
if (itemStack2.isEmpty()) {
this.cookingTime[j] = i;
this.cookingProgress[j] = 0;
this.items.set(j, itemStack.split(1));
this.level.gameEvent(GameEvent.BLOCK_CHANGE, this.getBlockPos(), GameEvent.Context.of(entity, this.getBlockState()));
this.markUpdated();
return true;
}
}
return false;
}
private void markUpdated() {
this.setChanged();
this.getLevel().sendBlockUpdated(this.getBlockPos(), this.getBlockState(), this.getBlockState(), 3);
}
public void clearContent() {
this.items.clear();
}
public void dowse() {
if (this.level != null) {
this.markUpdated();
}
}
}

View File

@@ -0,0 +1,323 @@
package me.hypherionmc.hyperlighting.common.blocks;
import me.hypherionmc.craterlib.api.rendering.CustomRenderType;
import me.hypherionmc.craterlib.api.rendering.DyableBlock;
import me.hypherionmc.craterlib.common.item.BlockItemDyable;
import me.hypherionmc.craterlib.util.BlockStateUtils;
import me.hypherionmc.craterlib.util.RenderUtils;
import me.hypherionmc.hyperlighting.api.LightableBlock;
import me.hypherionmc.hyperlighting.common.blockentities.AdvancedCampfireBlockEntity;
import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
import me.hypherionmc.hyperlighting.common.init.HLItems;
import me.hypherionmc.hyperlighting.common.init.HLSounds;
import me.hypherionmc.hyperlighting.util.StackUtil;
import net.minecraft.ChatFormatting;
import net.minecraft.client.color.block.BlockColor;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.stats.Stats;
import net.minecraft.tags.BlockTags;
import net.minecraft.util.RandomSource;
import net.minecraft.world.Containers;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.*;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.crafting.CampfireCookingRecipe;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityTicker;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.level.block.state.properties.EnumProperty;
import net.minecraft.world.level.gameevent.GameEvent;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.level.material.MaterialColor;
import net.minecraft.world.level.pathfinder.PathComputationType;
import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Optional;
/**
* @author HypherionSA
* @date 27/08/2022
*/
public class AdvancedCampfire extends BaseEntityBlock implements DyableBlock, LightableBlock, CustomRenderType {
public static final EnumProperty<DyeColor> COLOR = EnumProperty.create("color", DyeColor.class);
protected static final VoxelShape SHAPE = Block.box(0.0, 0.0, 0.0, 16.0, 7.0, 16.0);
public static final BooleanProperty LIT = BlockStateProperties.LIT;
public static final BooleanProperty SIGNAL_FIRE = BlockStateProperties.SIGNAL_FIRE;
public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;
private final boolean spawnParticles;
private final int fireDamage;
private DyeColor color;
public AdvancedCampfire(String name, DyeColor color, CreativeModeTab tab) {
super(Properties.of(
Material.WOOD,
MaterialColor.COLOR_BROWN)
.strength(2.0f)
.noOcclusion()
.sound(SoundType.WOOD)
.lightLevel(BlockStateUtils.createLightLevelFromLitBlockState(15)));
this.spawnParticles = true;
this.fireDamage = 1;
this.color = color;
this.registerDefaultState(this.defaultBlockState().setValue(LIT, CommonRegistration.config.campfireConfig.litByDefault).setValue(SIGNAL_FIRE, false).setValue(FACING, Direction.NORTH).setValue(COLOR, color));
HLItems.register(name, () -> new BlockItemDyable(this, new Item.Properties().tab(tab)));
}
@Override
public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) {
if (!level.isClientSide()) {
BlockEntity blockEntity = level.getBlockEntity(blockPos);
if (blockEntity instanceof AdvancedCampfireBlockEntity campfireBlockEntity) {
ItemStack itemStack = player.getItemInHand(interactionHand);
Optional<CampfireCookingRecipe> optional = campfireBlockEntity.getCookableRecipe(itemStack);
if (optional.isPresent()) {
if (campfireBlockEntity.placeFood(player, player.getAbilities().instabuild ? itemStack.copy() : itemStack, optional.get().getCookingTime())) {
player.awardStat(Stats.INTERACT_WITH_CAMPFIRE);
return InteractionResult.SUCCESS;
}
return InteractionResult.CONSUME;
}
}
if (!player.getItemInHand(interactionHand).isEmpty() && player.getItemInHand(interactionHand).getItem() instanceof DyeItem dyeItem) {
blockState = blockState.setValue(COLOR, dyeItem.getDyeColor());
this.color = dyeItem.getDyeColor();
level.setBlock(blockPos, blockState, 3);
level.sendBlockUpdated(blockPos, blockState, blockState, 3);
if (!player.isCreative()) {
ItemStack stack = player.getItemInHand(interactionHand);
stack.shrink(1);
player.setItemInHand(interactionHand, stack);
}
return InteractionResult.CONSUME;
} else if (!CommonRegistration.config.campfireConfig.requiresTool) {
blockState = blockState.cycle(LIT);
level.setBlock(blockPos, blockState, 3);
level.sendBlockUpdated(blockPos, blockState, blockState, 3);
if (!blockState.getValue(LIT)) {
level.playSound(null, blockPos, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.3f, 1.0f);
} else {
level.playSound(null, blockPos, HLSounds.TORCH_IGNITE.get(), SoundSource.BLOCKS, 0.3f, 1.0f);
}
return InteractionResult.CONSUME;
}
}
return InteractionResult.PASS;
}
@Override
public void entityInside(BlockState blockState, Level level, BlockPos blockPos, Entity entity) {
if (blockState.getValue(LIT) && entity instanceof LivingEntity && !EnchantmentHelper.hasFrostWalker((LivingEntity)entity)) {
entity.hurt(DamageSource.IN_FIRE, (float)this.fireDamage);
}
super.entityInside(blockState, level, blockPos, entity);
}
@Override
public void onRemove(BlockState blockState, Level level, BlockPos blockPos, BlockState blockState2, boolean bl) {
if (!blockState.is(blockState2.getBlock())) {
BlockEntity blockEntity = level.getBlockEntity(blockPos);
if (blockEntity instanceof AdvancedCampfireBlockEntity campfireBlockEntity) {
Containers.dropContents(level, blockPos, campfireBlockEntity.getItems());
}
super.onRemove(blockState, level, blockPos, blockState2, bl);
}
}
@Override
@Nullable
public BlockState getStateForPlacement(BlockPlaceContext blockPlaceContext) {
LevelAccessor levelAccessor = blockPlaceContext.getLevel();
BlockPos blockPos = blockPlaceContext.getClickedPos();
boolean bl = levelAccessor.getFluidState(blockPos).getType() == Fluids.WATER;
return this.defaultBlockState().setValue(SIGNAL_FIRE, this.isSmokeSource(levelAccessor.getBlockState(blockPos.below()))).setValue(LIT, !bl).setValue(FACING, blockPlaceContext.getHorizontalDirection());
}
@Override
public BlockState updateShape(BlockState blockState, Direction direction, BlockState blockState2, LevelAccessor levelAccessor, BlockPos blockPos, BlockPos blockPos2) {
return direction == Direction.DOWN ? blockState.setValue(SIGNAL_FIRE, this.isSmokeSource(blockState2)) : super.updateShape(blockState, direction, blockState2, levelAccessor, blockPos, blockPos2);
}
private boolean isSmokeSource(BlockState blockState) {
return blockState.is(Blocks.HAY_BLOCK);
}
@Override
public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) {
return SHAPE;
}
@Override
public RenderShape getRenderShape(BlockState blockState) {
return RenderShape.MODEL;
}
@Override
public void animateTick(BlockState blockState, Level level, BlockPos blockPos, RandomSource randomSource) {
if (blockState.getValue(LIT)) {
if (randomSource.nextInt(10) == 0) {
level.playLocalSound((double)blockPos.getX() + 0.5, (double)blockPos.getY() + 0.5, (double)blockPos.getZ() + 0.5, SoundEvents.CAMPFIRE_CRACKLE, SoundSource.BLOCKS, 0.5F + randomSource.nextFloat(), randomSource.nextFloat() * 0.7F + 0.6F, false);
}
if (this.spawnParticles && randomSource.nextInt(5) == 0) {
for(int i = 0; i < randomSource.nextInt(1) + 1; ++i) {
level.addParticle(ParticleTypes.LAVA, (double)blockPos.getX() + 0.5, (double)blockPos.getY() + 0.5, (double)blockPos.getZ() + 0.5, (double)(randomSource.nextFloat() / 2.0F), 5.0E-5, (double)(randomSource.nextFloat() / 2.0F));
}
}
}
}
public static void dowse(@Nullable Entity entity, LevelAccessor levelAccessor, BlockPos blockPos, BlockState blockState) {
if (levelAccessor.isClientSide()) {
for(int i = 0; i < 20; ++i) {
makeParticles((Level)levelAccessor, blockPos, blockState.getValue(SIGNAL_FIRE), true);
}
}
BlockEntity blockEntity = levelAccessor.getBlockEntity(blockPos);
if (blockEntity instanceof AdvancedCampfireBlockEntity campfireBlockEntity) {
campfireBlockEntity.dowse();
}
levelAccessor.gameEvent(entity, GameEvent.BLOCK_CHANGE, blockPos);
}
public static void makeParticles(Level level, BlockPos blockPos, boolean bl, boolean bl2) {
RandomSource randomSource = level.getRandom();
SimpleParticleType simpleParticleType = bl ? ParticleTypes.CAMPFIRE_SIGNAL_SMOKE : ParticleTypes.CAMPFIRE_COSY_SMOKE;
level.addAlwaysVisibleParticle(simpleParticleType, true, (double)blockPos.getX() + 0.5 + randomSource.nextDouble() / 3.0 * (double)(randomSource.nextBoolean() ? 1 : -1), (double)blockPos.getY() + randomSource.nextDouble() + randomSource.nextDouble(), (double)blockPos.getZ() + 0.5 + randomSource.nextDouble() / 3.0 * (double)(randomSource.nextBoolean() ? 1 : -1), 0.0, 0.07, 0.0);
if (bl2) {
level.addParticle(ParticleTypes.SMOKE, (double)blockPos.getX() + 0.5 + randomSource.nextDouble() / 4.0 * (double)(randomSource.nextBoolean() ? 1 : -1), (double)blockPos.getY() + 0.4, (double)blockPos.getZ() + 0.5 + randomSource.nextDouble() / 4.0 * (double)(randomSource.nextBoolean() ? 1 : -1), 0.0, 0.005, 0.0);
}
}
public static boolean isLitCampfire(BlockState blockState) {
return blockState.hasProperty(LIT) && blockState.is(BlockTags.CAMPFIRES) && blockState.getValue(LIT);
}
@Override
public BlockState rotate(BlockState blockState, Rotation rotation) {
return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING)));
}
@Override
public BlockState mirror(BlockState blockState, Mirror mirror) {
return blockState.rotate(mirror.getRotation(blockState.getValue(FACING)));
}
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(LIT, SIGNAL_FIRE, FACING, COLOR);
}
@Override
public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) {
return new AdvancedCampfireBlockEntity(blockPos, blockState);
}
@Override
@Nullable
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState blockState, BlockEntityType<T> blockEntityType) {
return (level1, blockPos, blockState1, t) -> {
if (t instanceof AdvancedCampfireBlockEntity be) {
if (level1.isClientSide() && blockState1.getValue(LIT)) {
be.clientTick(level1, blockPos, blockState1, t);
} else if (!level1.isClientSide() && blockState1.getValue(LIT)) {
be.serverTick(level1, blockPos, blockState1, t);
}
}
};
}
@Override
public boolean isPathfindable(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, PathComputationType pathComputationType) {
return false;
}
@Override
public void toggleLight(Level worldIn, BlockState state, BlockPos pos) {
state = state.setValue(LIT, !state.getValue(LIT));
worldIn.setBlock(pos, state, 2);
if (!state.getValue(LIT)) {
worldIn.playSound(null, pos, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.3f, 1.0f);
} else {
worldIn.playSound(null, pos, HLSounds.TORCH_IGNITE.get(), SoundSource.BLOCKS, 0.3f, 1.0f);
}
worldIn.blockUpdated(pos, this);
}
@Override
public BlockColor dyeHandler() {
return ((blockState, blockAndTintGetter, blockPos, i) -> {
if (blockState.getValue(LIT)) {
return RenderUtils.renderColorFromDye(blockState.getValue(COLOR));
} else {
return RenderUtils.renderColorFromDye(DyeColor.BLACK);
}
});
}
@Override
public DyeColor defaultDyeColor() {
return this.defaultBlockState().getValue(COLOR);
}
@Override
public void appendHoverText(ItemStack stack, BlockGetter level, List<Component> tooltip, TooltipFlag options) {
tooltip.add(Component.literal(ChatFormatting.YELLOW + "Dyable"));
tooltip.add(Component.literal(ChatFormatting.GREEN + "Color: " + color.getName()));
super.appendHoverText(stack, level, tooltip, options);
}
@Override
public @NotNull ItemStack getCloneItemStack(@NotNull BlockGetter level, @NotNull BlockPos pos, @NotNull BlockState state) {
return StackUtil.getColorStack(this, state.getValue(COLOR));
}
@Override
public List<ItemStack> getDrops(BlockState blockState, LootContext.Builder lootBuilder) {
return List.of(StackUtil.getColorStack(this, blockState.getValue(COLOR)));
}
@Override
public RenderType getCustomRenderType() {
return RenderType.cutoutMipped();
}
}

View File

@@ -1,7 +1,7 @@
package me.hypherionmc.hyperlighting.common.init;
import me.hypherionmc.craterlib.client.gui.tabs.CreativeTabBuilder;
import me.hypherionmc.hyperlighting.common.config.HyperLightingConfig;
import me.hypherionmc.hyperlighting.client.config.HyperLightingClientConfig;
import me.hypherionmc.hyperlighting.integration.HyperLightingIntegrations;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
@@ -10,7 +10,7 @@ import static me.hypherionmc.hyperlighting.Constants.MOD_ID;
public class CommonRegistration {
public static HyperLightingConfig config = new HyperLightingConfig();
public static HyperLightingClientConfig config = new HyperLightingClientConfig();
public static final CreativeModeTab LIGHTS_TAB = CreativeTabBuilder.builder(MOD_ID, "lighting").setIcon(() -> new ItemStack(HLBlocks.ADVANCED_LANTERN)).build();
public static void registerAll() {
@@ -18,6 +18,7 @@ public class CommonRegistration {
HLParticles.loadAll();
HLBlocks.loadAll();
HLItems.loadAll();
HLBlockEntities.loadAll();
HLEntities.loadAll();
HyperLightingIntegrations.registerCommon();
}

View File

@@ -0,0 +1,21 @@
package me.hypherionmc.hyperlighting.common.init;
import me.hypherionmc.craterlib.systems.reg.RegistrationProvider;
import me.hypherionmc.craterlib.systems.reg.RegistryObject;
import me.hypherionmc.hyperlighting.Constants;
import me.hypherionmc.hyperlighting.common.blockentities.AdvancedCampfireBlockEntity;
import net.minecraft.core.Registry;
import net.minecraft.world.level.block.entity.BlockEntityType;
/**
* @author HypherionSA
* @date 27/08/2022
*/
public class HLBlockEntities {
public static final RegistrationProvider<BlockEntityType<?>> BE = RegistrationProvider.get(Registry.BLOCK_ENTITY_TYPE, Constants.MOD_ID);
public static RegistryObject<BlockEntityType<AdvancedCampfireBlockEntity>> CAMPFIRE = BE.register("campfire", () -> BlockEntityType.Builder.of(AdvancedCampfireBlockEntity::new, HLBlocks.ADVANCED_CAMPFIRE.get()).build(null));
public static void loadAll() {}
}

View File

@@ -4,6 +4,7 @@ import me.hypherionmc.craterlib.systems.reg.BlockRegistryObject;
import me.hypherionmc.craterlib.systems.reg.RegistrationProvider;
import me.hypherionmc.hyperlighting.Constants;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedCandleBlock;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedCampfire;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedLanternBlock;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedTorchBlock;
import net.minecraft.core.Registry;
@@ -22,8 +23,11 @@ public class HLBlocks {
/* Lanterns */
public static BlockRegistryObject<Block> ADVANCED_LANTERN = register("advanced_lantern", () -> new AdvancedLanternBlock("advanced_lantern", DyeColor.ORANGE, CommonRegistration.LIGHTS_TAB));
/* Candles */
/* CampFires */
public static BlockRegistryObject<Block> ADVANCED_CAMPFIRE = register("advanced_campfire", () -> new AdvancedCampfire("advanced_campfire", DyeColor.ORANGE, CommonRegistration.LIGHTS_TAB));
/* Candles */
public static BlockRegistryObject<Block> ADVANCED_CANDLE = register("advanced_candle", () -> new AdvancedCandleBlock("advanced_candle", DyeColor.ORANGE, CommonRegistration.LIGHTS_TAB));
public static void loadAll() {}

View File

@@ -4,8 +4,10 @@ import com.lowdragmc.shimmer.client.light.ColorPointLight;
import com.lowdragmc.shimmer.client.light.LightManager;
import me.hypherionmc.craterlib.common.item.BlockItemDyable;
import me.hypherionmc.craterlib.util.RenderUtils;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedCampfire;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedLanternBlock;
import me.hypherionmc.hyperlighting.common.blocks.AdvancedTorchBlock;
import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
import me.hypherionmc.hyperlighting.common.init.HLBlocks;
import net.minecraft.world.item.DyeColor;
@@ -27,7 +29,7 @@ public class HyperLightingShimmer {
private static void registerBlocks() {
LightManager.INSTANCE.registerBlockLight(HLBlocks.ADVANCED_TORCH.get(), (state, blockPos) -> {
if (state.getValue(AdvancedTorchBlock.LIT)) {
if (state.getValue(AdvancedTorchBlock.LIT) && CommonRegistration.config.torchConfig.coloredLighting) {
DyeColor color = state.getValue(AdvancedTorchBlock.COLOR);
return new ColorPointLight.Template(10, RenderUtils.alphaColorFromDye(color, 1f));
}
@@ -35,12 +37,20 @@ public class HyperLightingShimmer {
});
LightManager.INSTANCE.registerBlockLight(HLBlocks.ADVANCED_LANTERN.get(), (state, blockPos) -> {
if (state.getValue(AdvancedLanternBlock.LIT)) {
if (state.getValue(AdvancedLanternBlock.LIT) && CommonRegistration.config.lanternConfig.coloredLighting) {
DyeColor color = state.getValue(AdvancedLanternBlock.COLOR);
return new ColorPointLight.Template(10, RenderUtils.alphaColorFromDye(color, 1f));
}
return null;
});
LightManager.INSTANCE.registerBlockLight(HLBlocks.ADVANCED_CAMPFIRE.get(), (state, blockPos) -> {
if (state.getValue(AdvancedCampfire.LIT) && CommonRegistration.config.campfireConfig.coloredLighting) {
DyeColor color = state.getValue(AdvancedCampfire.COLOR);
return new ColorPointLight.Template(10, RenderUtils.alphaColorFromDye(color, 1f));
}
return null;
});
}
}

View File

@@ -0,0 +1,131 @@
{
"variants": {
"facing=east,lit=false,color=white": { "model": "hyperlighting:block/campfire/white_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=white": { "model": "hyperlighting:block/campfire/white_campfire_lit", "y": 270 },
"facing=north,lit=false,color=white": { "model": "hyperlighting:block/campfire/white_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=white": { "model": "hyperlighting:block/campfire/white_campfire_lit", "y": 180 },
"facing=south,lit=false,color=white": { "model": "hyperlighting:block/campfire/white_campfire_unlit" },
"facing=south,lit=true,color=white": { "model": "hyperlighting:block/campfire/white_campfire_lit" },
"facing=west,lit=false,color=white": { "model": "hyperlighting:block/campfire/white_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=white": { "model": "hyperlighting:block/campfire/white_campfire_lit", "y": 90},
"facing=east,lit=false,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_lit", "y": 270 },
"facing=north,lit=false,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_lit", "y": 180 },
"facing=south,lit=false,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_unlit" },
"facing=south,lit=true,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_lit" },
"facing=west,lit=false,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=orange": { "model": "hyperlighting:block/campfire/orange_campfire_lit", "y": 90},
"facing=east,lit=false,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_lit", "y": 270 },
"facing=north,lit=false,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_lit", "y": 180 },
"facing=south,lit=false,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_unlit" },
"facing=south,lit=true,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_lit" },
"facing=west,lit=false,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=magenta": { "model": "hyperlighting:block/campfire/magenta_campfire_lit", "y": 90},
"facing=east,lit=false,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_lit", "y": 270 },
"facing=north,lit=false,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_lit", "y": 180 },
"facing=south,lit=false,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_unlit" },
"facing=south,lit=true,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_lit" },
"facing=west,lit=false,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=light_blue": { "model": "hyperlighting:block/campfire/light_blue_campfire_lit", "y": 90},
"facing=east,lit=false,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_lit", "y": 270 },
"facing=north,lit=false,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_lit", "y": 180 },
"facing=south,lit=false,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_unlit" },
"facing=south,lit=true,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_lit" },
"facing=west,lit=false,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=yellow": { "model": "hyperlighting:block/campfire/yellow_campfire_lit", "y": 90},
"facing=east,lit=false,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_lit", "y": 270 },
"facing=north,lit=false,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_lit", "y": 180 },
"facing=south,lit=false,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_unlit" },
"facing=south,lit=true,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_lit" },
"facing=west,lit=false,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=lime": { "model": "hyperlighting:block/campfire/lime_campfire_lit", "y": 90},
"facing=east,lit=false,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_lit", "y": 270 },
"facing=north,lit=false,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_lit", "y": 180 },
"facing=south,lit=false,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_unlit" },
"facing=south,lit=true,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_lit" },
"facing=west,lit=false,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=pink": { "model": "hyperlighting:block/campfire/pink_campfire_lit", "y": 90},
"facing=east,lit=false,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_lit", "y": 270 },
"facing=north,lit=false,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_lit", "y": 180 },
"facing=south,lit=false,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_unlit" },
"facing=south,lit=true,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_lit" },
"facing=west,lit=false,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=gray": { "model": "hyperlighting:block/campfire/gray_campfire_lit", "y": 90},
"facing=east,lit=false,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_lit", "y": 270 },
"facing=north,lit=false,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_lit", "y": 180 },
"facing=south,lit=false,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_unlit" },
"facing=south,lit=true,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_lit" },
"facing=west,lit=false,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=light_gray": { "model": "hyperlighting:block/campfire/light_gray_campfire_lit", "y": 90},
"facing=east,lit=false,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_lit", "y": 270 },
"facing=north,lit=false,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_lit", "y": 180 },
"facing=south,lit=false,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_unlit" },
"facing=south,lit=true,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_lit" },
"facing=west,lit=false,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=cyan": { "model": "hyperlighting:block/campfire/cyan_campfire_lit", "y": 90},
"facing=east,lit=false,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_lit", "y": 270 },
"facing=north,lit=false,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_lit", "y": 180 },
"facing=south,lit=false,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_unlit" },
"facing=south,lit=true,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_lit" },
"facing=west,lit=false,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=purple": { "model": "hyperlighting:block/campfire/purple_campfire_lit", "y": 90},
"facing=east,lit=false,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_lit", "y": 270 },
"facing=north,lit=false,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_lit", "y": 180 },
"facing=south,lit=false,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_unlit" },
"facing=south,lit=true,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_lit" },
"facing=west,lit=false,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=blue": { "model": "hyperlighting:block/campfire/blue_campfire_lit", "y": 90},
"facing=east,lit=false,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_lit", "y": 270 },
"facing=north,lit=false,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_lit", "y": 180 },
"facing=south,lit=false,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_unlit" },
"facing=south,lit=true,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_lit" },
"facing=west,lit=false,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=brown": { "model": "hyperlighting:block/campfire/brown_campfire_lit", "y": 90},
"facing=east,lit=false,color=green": { "model": "hyperlighting:block/campfire/green_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=green": { "model": "hyperlighting:block/campfire/green_campfire_lit", "y": 270 },
"facing=north,lit=false,color=green": { "model": "hyperlighting:block/campfire/green_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=green": { "model": "hyperlighting:block/campfire/green_campfire_lit", "y": 180 },
"facing=south,lit=false,color=green": { "model": "hyperlighting:block/campfire/green_campfire_unlit" },
"facing=south,lit=true,color=green": { "model": "hyperlighting:block/campfire/green_campfire_lit" },
"facing=west,lit=false,color=green": { "model": "hyperlighting:block/campfire/green_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=green": { "model": "hyperlighting:block/campfire/green_campfire_lit", "y": 90},
"facing=east,lit=false,color=red": { "model": "hyperlighting:block/campfire/red_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=red": { "model": "hyperlighting:block/campfire/red_campfire_lit", "y": 270 },
"facing=north,lit=false,color=red": { "model": "hyperlighting:block/campfire/red_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=red": { "model": "hyperlighting:block/campfire/red_campfire_lit", "y": 180 },
"facing=south,lit=false,color=red": { "model": "hyperlighting:block/campfire/red_campfire_unlit" },
"facing=south,lit=true,color=red": { "model": "hyperlighting:block/campfire/red_campfire_lit" },
"facing=west,lit=false,color=red": { "model": "hyperlighting:block/campfire/red_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=red": { "model": "hyperlighting:block/campfire/red_campfire_lit", "y": 90},
"facing=east,lit=false,color=black": { "model": "hyperlighting:block/campfire/black_campfire_unlit", "y": 270 },
"facing=east,lit=true,color=black": { "model": "hyperlighting:block/campfire/black_campfire_lit", "y": 270 },
"facing=north,lit=false,color=black": { "model": "hyperlighting:block/campfire/black_campfire_unlit", "y": 180 },
"facing=north,lit=true,color=black": { "model": "hyperlighting:block/campfire/black_campfire_lit", "y": 180 },
"facing=south,lit=false,color=black": { "model": "hyperlighting:block/campfire/black_campfire_unlit" },
"facing=south,lit=true,color=black": { "model": "hyperlighting:block/campfire/black_campfire_lit" },
"facing=west,lit=false,color=black": { "model": "hyperlighting:block/campfire/black_campfire_unlit", "y": 90 },
"facing=west,lit=true,color=black": { "model": "hyperlighting:block/campfire/black_campfire_lit", "y": 90} }
}

View File

@@ -2,6 +2,7 @@
"block.hyperlighting.advanced_torch": "Advanced Torch (%s)",
"block.hyperlighting.advanced_lantern": "Advanced Lantern (%s)",
"block.hyperlighting.advanced_candle": "Advanced Candle (%s)",
"block.hyperlighting.advanced_campfire": "Advanced Campfire (%s)",
"item.hyperlighting.lighter_tool": "Torch Lighter Tool",

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/black_campfire_log_lit",
"1": "hyperlighting:block/campfire/black_campfire_log",
"2": "hyperlighting:block/campfire/black_campfire_fire",
"particle": "hyperlighting:block/campfire/black_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/black_campfire_log",
"particle": "hyperlighting:block/campfire/black_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/blue_campfire_log_lit",
"1": "hyperlighting:block/campfire/blue_campfire_log",
"2": "hyperlighting:block/campfire/blue_campfire_fire",
"particle": "hyperlighting:block/campfire/blue_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/blue_campfire_log",
"particle": "hyperlighting:block/campfire/blue_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/brown_campfire_log_lit",
"1": "hyperlighting:block/campfire/brown_campfire_log",
"2": "hyperlighting:block/campfire/brown_campfire_fire",
"particle": "hyperlighting:block/campfire/brown_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/brown_campfire_log",
"particle": "hyperlighting:block/campfire/brown_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/cyan_campfire_log_lit",
"1": "hyperlighting:block/campfire/cyan_campfire_log",
"2": "hyperlighting:block/campfire/cyan_campfire_fire",
"particle": "hyperlighting:block/campfire/cyan_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/cyan_campfire_log",
"particle": "hyperlighting:block/campfire/cyan_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/gray_campfire_log_lit",
"1": "hyperlighting:block/campfire/gray_campfire_log",
"2": "hyperlighting:block/campfire/gray_campfire_fire",
"particle": "hyperlighting:block/campfire/gray_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/gray_campfire_log",
"particle": "hyperlighting:block/campfire/gray_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/green_campfire_log_lit",
"1": "hyperlighting:block/campfire/green_campfire_log",
"2": "hyperlighting:block/campfire/green_campfire_fire",
"particle": "hyperlighting:block/campfire/green_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/green_campfire_log",
"particle": "hyperlighting:block/campfire/green_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/light_blue_campfire_log_lit",
"1": "hyperlighting:block/campfire/light_blue_campfire_log",
"2": "hyperlighting:block/campfire/light_blue_campfire_fire",
"particle": "hyperlighting:block/campfire/light_blue_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/light_blue_campfire_log",
"particle": "hyperlighting:block/campfire/light_blue_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/light_gray_campfire_log_lit",
"1": "hyperlighting:block/campfire/light_gray_campfire_log",
"2": "hyperlighting:block/campfire/light_gray_campfire_fire",
"particle": "hyperlighting:block/campfire/light_gray_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/light_gray_campfire_log",
"particle": "hyperlighting:block/campfire/light_gray_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/lime_campfire_log_lit",
"1": "hyperlighting:block/campfire/lime_campfire_log",
"2": "hyperlighting:block/campfire/lime_campfire_fire",
"particle": "hyperlighting:block/campfire/lime_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/lime_campfire_log",
"particle": "hyperlighting:block/campfire/lime_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/magenta_campfire_log_lit",
"1": "hyperlighting:block/campfire/magenta_campfire_log",
"2": "hyperlighting:block/campfire/magenta_campfire_fire",
"particle": "hyperlighting:block/campfire/magenta_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/magenta_campfire_log",
"particle": "hyperlighting:block/campfire/magenta_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/orange_campfire_log_lit",
"1": "hyperlighting:block/campfire/orange_campfire_log",
"2": "hyperlighting:block/campfire/orange_campfire_fire",
"particle": "hyperlighting:block/campfire/orange_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/orange_campfire_log",
"particle": "hyperlighting:block/campfire/orange_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/pink_campfire_log_lit",
"1": "hyperlighting:block/campfire/pink_campfire_log",
"2": "hyperlighting:block/campfire/pink_campfire_fire",
"particle": "hyperlighting:block/campfire/pink_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/pink_campfire_log",
"particle": "hyperlighting:block/campfire/pink_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/purple_campfire_log_lit",
"1": "hyperlighting:block/campfire/purple_campfire_log",
"2": "hyperlighting:block/campfire/purple_campfire_fire",
"particle": "hyperlighting:block/campfire/purple_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/purple_campfire_log",
"particle": "hyperlighting:block/campfire/purple_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/red_campfire_log_lit",
"1": "hyperlighting:block/campfire/red_campfire_log",
"2": "hyperlighting:block/campfire/red_campfire_fire",
"particle": "hyperlighting:block/campfire/red_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/red_campfire_log",
"particle": "hyperlighting:block/campfire/red_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/white_campfire_log_lit",
"1": "hyperlighting:block/campfire/white_campfire_log",
"2": "hyperlighting:block/campfire/white_campfire_fire",
"particle": "hyperlighting:block/campfire/white_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/white_campfire_log",
"particle": "hyperlighting:block/campfire/white_campfire_log"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "hyperlighting:block/campfire_base",
"textures": {
"0": "hyperlighting:block/campfire/yellow_campfire_log_lit",
"1": "hyperlighting:block/campfire/yellow_campfire_log",
"2": "hyperlighting:block/campfire/yellow_campfire_fire",
"particle": "hyperlighting:block/campfire/yellow_campfire_log_lit"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "hyperlighting:block/campfire_base_unlit",
"textures": {
"0": "hyperlighting:block/campfire/yellow_campfire_log",
"particle": "hyperlighting:block/campfire/yellow_campfire_log"
}
}

View File

@@ -0,0 +1,100 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "hyperlighting:block/campfire/black_campfire_log_lit",
"1": "hyperlighting:block/campfire/black_campfire_log",
"2": "hyperlighting:block/campfire/black_campfire_fire",
"3": "hyperlighting:block/campfire/ashes",
"particle": "hyperlighting:block/campfire/black_campfire_log_lit"
},
"elements": [
{
"from": [1, 0, 0],
"to": [5, 4, 16],
"faces": {
"north": {"uv": [0, 12, 4, 16], "texture": "#1"},
"east": {"uv": [0, 0.5, 16, 2.5], "texture": "#0"},
"south": {"uv": [0, 12, 4, 16], "texture": "#1"},
"west": {"uv": [0, 8, 16, 12], "texture": "#1"},
"up": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#1"},
"down": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#1"}
}
},
{
"from": [11, 0, 0],
"to": [15, 4, 16],
"faces": {
"north": {"uv": [0, 12, 4, 16], "texture": "#1"},
"east": {"uv": [0, 8, 16, 12], "texture": "#1"},
"south": {"uv": [0, 12, 4, 16], "texture": "#1"},
"west": {"uv": [0, 1, 16, 5], "texture": "#0"},
"up": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#1"},
"down": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#1"}
}
},
{
"from": [0, 3, 1],
"to": [16, 7, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 3]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 12, 4, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#0"},
"west": {"uv": [0, 12, 4, 16], "texture": "#1"},
"up": {"uv": [0, 8, 16, 12], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 4, 16, 8], "rotation": 180, "texture": "#0"}
}
},
{
"from": [0, 3, 11],
"to": [16, 7, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 13]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 12, 4, 16], "texture": "#1"},
"south": {"uv": [0, 0, 16, 4], "texture": "#0"},
"west": {"uv": [0, 12, 4, 16], "texture": "#1"},
"up": {"uv": [0, 8, 16, 12], "rotation": 180, "texture": "#1"},
"down": {"uv": [0, 4, 16, 8], "rotation": 180, "texture": "#0"}
}
},
{
"from": [5, 0, 0],
"to": [11, 1, 16],
"faces": {
"north": {"uv": [0, 7, 6, 8], "texture": "#3"},
"east": {"uv": [0, 7, 16, 8], "texture": "#3"},
"south": {"uv": [10, 7, 16, 8], "texture": "#3"},
"west": {"uv": [0, 7, 16, 8], "texture": "#3"},
"up": {"uv": [0, 8, 16, 14], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#3"}
}
},
{
"from": [0, 1, 8],
"to": [16, 17, 8],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#2"},
"east": {"uv": [0, 0, 0, 8], "texture": "#2"},
"south": {"uv": [0, 0, 16, 16], "texture": "#2"},
"west": {"uv": [0, 0, 0, 8], "texture": "#2"},
"up": {"uv": [0, 0, 16, 0], "texture": "#2"},
"down": {"uv": [0, 0, 16, 0], "texture": "#2"}
}
},
{
"from": [8, 1, 0],
"to": [8, 17, 16],
"rotation": {"angle": 45, "axis": "y", "origin": [8, 0, 8]},
"faces": {
"north": {"uv": [0, 0, 0, 8], "texture": "#2"},
"east": {"uv": [0, 0, 16, 16], "texture": "#2"},
"south": {"uv": [0, 0, 0, 8], "texture": "#2"},
"west": {"uv": [0, 0, 16, 16], "texture": "#2"},
"up": {"uv": [0, 0, 16, 0], "rotation": 270, "texture": "#2"},
"down": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#2"}
}
}
]
}

View File

@@ -0,0 +1,72 @@
{
"credit": "Made with Blockbench",
"textures": {
"0": "hyperlighting:block/campfire/black_campfire_log",
"1": "hyperlighting:block/campfire/ashes",
"particle": "hyperlighting:block/campfire/black_campfire_log"
},
"elements": [
{
"from": [1, 0, 0],
"to": [5, 4, 16],
"faces": {
"north": {"uv": [0, 12, 4, 16], "texture": "#0"},
"east": {"uv": [0, 1, 16, 5], "texture": "#0"},
"south": {"uv": [0, 12, 4, 16], "texture": "#0"},
"west": {"uv": [0, 8, 16, 12], "texture": "#0"},
"up": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#0"}
}
},
{
"from": [11, 0, 0],
"to": [15, 4, 16],
"faces": {
"north": {"uv": [0, 12, 4, 16], "texture": "#0"},
"east": {"uv": [0, 8, 16, 12], "texture": "#0"},
"south": {"uv": [0, 12, 4, 16], "texture": "#0"},
"west": {"uv": [0, 1, 16, 5], "texture": "#0"},
"up": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#0"},
"down": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#0"}
}
},
{
"from": [0, 3, 1],
"to": [16, 7, 5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 3]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 12, 4, 16], "texture": "#0"},
"south": {"uv": [0, 0, 16, 4], "texture": "#0"},
"west": {"uv": [0, 12, 4, 16], "texture": "#0"},
"up": {"uv": [0, 8, 16, 12], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 4, 16, 8], "rotation": 180, "texture": "#0"}
}
},
{
"from": [0, 3, 11],
"to": [16, 7, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 13]},
"faces": {
"north": {"uv": [0, 0, 16, 4], "texture": "#0"},
"east": {"uv": [0, 12, 4, 16], "texture": "#0"},
"south": {"uv": [0, 0, 16, 4], "texture": "#0"},
"west": {"uv": [0, 12, 4, 16], "texture": "#0"},
"up": {"uv": [0, 8, 16, 12], "rotation": 180, "texture": "#0"},
"down": {"uv": [0, 4, 16, 8], "rotation": 180, "texture": "#0"}
}
},
{
"from": [5, 0, 0],
"to": [11, 1, 16],
"faces": {
"north": {"uv": [0, 7, 6, 8], "texture": "#1"},
"east": {"uv": [0, 7, 16, 8], "texture": "#1"},
"south": {"uv": [10, 7, 16, 8], "texture": "#1"},
"west": {"uv": [0, 7, 16, 8], "texture": "#1"},
"up": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#1"},
"down": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#1"}
}
}
]
}

View File

@@ -0,0 +1,21 @@
{
"parent": "hyperlighting:block/campfire_base",
"overrides": [
{ "predicate": { "color": 0 }, "model": "hyperlighting:block/campfire/white_campfire_lit" },
{ "predicate": { "color": 1 }, "model": "hyperlighting:block/campfire/orange_campfire_lit" },
{ "predicate": { "color": 2 }, "model": "hyperlighting:block/campfire/magenta_campfire_lit" },
{ "predicate": { "color": 3 }, "model": "hyperlighting:block/campfire/light_blue_campfire_lit" },
{ "predicate": { "color": 4 }, "model": "hyperlighting:block/campfire/yellow_campfire_lit" },
{ "predicate": { "color": 5 }, "model": "hyperlighting:block/campfire/lime_campfire_lit" },
{ "predicate": { "color": 6 }, "model": "hyperlighting:block/campfire/pink_campfire_lit" },
{ "predicate": { "color": 7 }, "model": "hyperlighting:block/campfire/gray_campfire_lit" },
{ "predicate": { "color": 8 }, "model": "hyperlighting:block/campfire/light_gray_campfire_lit" },
{ "predicate": { "color": 9 }, "model": "hyperlighting:block/campfire/cyan_campfire_lit" },
{ "predicate": { "color": 10 }, "model": "hyperlighting:block/campfire/purple_campfire_lit" },
{ "predicate": { "color": 11 }, "model": "hyperlighting:block/campfire/blue_campfire_lit" },
{ "predicate": { "color": 12 }, "model": "hyperlighting:block/campfire/brown_campfire_lit" },
{ "predicate": { "color": 13 }, "model": "hyperlighting:block/campfire/green_campfire_lit" },
{ "predicate": { "color": 14 }, "model": "hyperlighting:block/campfire/red_campfire_lit" },
{ "predicate": { "color": 15 }, "model": "hyperlighting:block/campfire/black_campfire_lit" }
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,5 @@
{
"animation": {
"frametime": 2
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Some files were not shown because too many files have changed in this diff Show More