diff --git a/.gitignore b/.gitignore index f3d7e9e..77de4b6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +### Minecraft +/src/generated/resources/.cache/* + ### Java template # Compiled class file *.class diff --git a/src/generated/resources/assets/firefly_bush_backport/blockstates/firefly_bush.json b/src/generated/resources/assets/firefly_bush_backport/blockstates/firefly_bush.json new file mode 100644 index 0000000..54c7074 --- /dev/null +++ b/src/generated/resources/assets/firefly_bush_backport/blockstates/firefly_bush.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "firefly_bush_backport:block/firefly_bush" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/firefly_bush_backport/models/block/firefly_bush.json b/src/generated/resources/assets/firefly_bush_backport/models/block/firefly_bush.json new file mode 100644 index 0000000..253a2d4 --- /dev/null +++ b/src/generated/resources/assets/firefly_bush_backport/models/block/firefly_bush.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cross_emissive", + "render_type": "minecraft:cutout", + "textures": { + "cross": "firefly_bush_backport:block/firefly_bush", + "cross_emissive": "firefly_bush_backport:block/firefly_bush_emissive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/firefly_bush_backport/models/item/firefly_bush.json b/src/generated/resources/assets/firefly_bush_backport/models/item/firefly_bush.json new file mode 100644 index 0000000..124a962 --- /dev/null +++ b/src/generated/resources/assets/firefly_bush_backport/models/item/firefly_bush.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "firefly_bush_backport:item/firefly_bush" + } +} \ No newline at end of file diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java new file mode 100644 index 0000000..3d1f952 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/block/FireflyBushBlock.java @@ -0,0 +1,64 @@ +package dev.micle.firefly_bush_backport.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.BonemealableBlock; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.state.BlockState; + +import java.util.List; +import java.util.Optional; + +public class FireflyBushBlock extends BushBlock implements BonemealableBlock { + private static final double FIREFLY_CHANCE_PER_TICK = 0.7; + private static final double FIREFLY_HORIZONTAL_RANGE = 10.0; + private static final double FIREFLY_VERTICAL_RANGE = 5.0; + private static final int FIREFLY_SPAWN_MAX_BRIGHTNESS_LEVEL = 13; + private static final int FIREFLY_AMBIENT_SOUND_CHANCE_ONE_IN = 30; + + public FireflyBushBlock(Properties pProperties) { + super(pProperties); + } + + @Override + public void animateTick(BlockState pState, Level pLevel, BlockPos pPos, RandomSource pRandom) { + super.animateTick(pState, pLevel, pPos, pRandom); + } + + @Override + public boolean isValidBonemealTarget(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean pIsClient) { + return hasSpreadableNeighbourPos(pLevel, pPos, pState); + } + + @Override + public boolean isBonemealSuccess(Level pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) { + return true; + } + + @Override + public void performBonemeal(ServerLevel pLevel, RandomSource pRandom, BlockPos pPos, BlockState pState) { + findSpreadableNeighbourPos(pLevel, pPos, pState).ifPresent(x -> pLevel.setBlockAndUpdate(x, this.defaultBlockState())); + } + + static boolean hasSpreadableNeighbourPos(LevelReader levelReader, BlockPos blockPos, BlockState blockState) { + return getSpreadableNeighbourPos(Direction.Plane.HORIZONTAL.stream().toList(), levelReader, blockPos, blockState).isPresent(); + } + + static Optional findSpreadableNeighbourPos(Level level, BlockPos blockPos, BlockState blockState) { + return getSpreadableNeighbourPos(Direction.Plane.HORIZONTAL.shuffledCopy(level.random), level, blockPos, blockState); + } + + static Optional getSpreadableNeighbourPos(List directions, LevelReader levelReader, BlockPos blockPos, BlockState blockState) { + for (Direction direction : directions) { + BlockPos blockPosDirection = blockPos.relative(direction); + if (levelReader.isEmptyBlock(blockPosDirection) && blockState.canSurvive(levelReader, blockPosDirection)) { + return Optional.of(blockPosDirection); + } + } + return Optional.empty(); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java b/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java new file mode 100644 index 0000000..2ab4c4b --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/block/ModBlocks.java @@ -0,0 +1,46 @@ +package dev.micle.firefly_bush_backport.block; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.item.ModItems; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.material.MapColor; +import net.minecraft.world.level.material.PushReaction; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.function.Supplier; + +public class ModBlocks { + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, FireflyBushBackport.MOD_ID); + + public static RegistryObject FIREFLY_BUSH = registerBlock("firefly_bush", + () -> new FireflyBushBlock(BlockBehaviour.Properties.of() + .mapColor(MapColor.PLANT) + .ignitedByLava() + .lightLevel(blockState -> 2) + .noCollission() + .instabreak() + .sound(SoundType.SWEET_BERRY_BUSH) + .pushReaction(PushReaction.DESTROY)) + ); + + public static void register(IEventBus modEventBus) { + BLOCKS.register(modEventBus); + } + + private static RegistryObject registerBlockItem(String name, RegistryObject block) { + return ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties())); + } + + private static RegistryObject registerBlock(String name, Supplier block) { + RegistryObject ret = BLOCKS.register(name, block); + registerBlockItem(name, ret); + return ret; + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/creative_mode_tab/ModCreativeModeTabs.java b/src/main/java/dev/micle/firefly_bush_backport/creative_mode_tab/ModCreativeModeTabs.java new file mode 100644 index 0000000..0b126a0 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/creative_mode_tab/ModCreativeModeTabs.java @@ -0,0 +1,28 @@ +package dev.micle.firefly_bush_backport.creative_mode_tab; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.block.ModBlocks; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +public class ModCreativeModeTabs { + public static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, FireflyBushBackport.MOD_ID); + + public static final RegistryObject MAIN_TAB = CREATIVE_MODE_TABS.register( "main", + () -> CreativeModeTab.builder() + .title(Component.translatable(String.format("itemGroup.%s.main", FireflyBushBackport.MOD_ID))) + .icon(ModBlocks.FIREFLY_BUSH.get().asItem()::getDefaultInstance) + .displayItems((itemDisplayParams, output) -> { + output.accept(ModBlocks.FIREFLY_BUSH.get()); + }) + .build() + ); + + public static void register(IEventBus modEventBus) { + CREATIVE_MODE_TABS.register(modEventBus); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java b/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java new file mode 100644 index 0000000..18c0024 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/data/DataGenerators.java @@ -0,0 +1,22 @@ +package dev.micle.firefly_bush_backport.data; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.data.client.ModBlockStateProvider; +import dev.micle.firefly_bush_backport.data.client.ModItemModelProvider; +import net.minecraft.data.DataGenerator; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = FireflyBushBackport.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class DataGenerators { + @SubscribeEvent + public static void gatherData(GatherDataEvent event) { + DataGenerator generator = event.getGenerator(); + ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + + generator.addProvider(event.includeServer(), new ModBlockStateProvider(generator, existingFileHelper)); + generator.addProvider(event.includeServer(), new ModItemModelProvider(generator, existingFileHelper)); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/client/ModBlockStateProvider.java b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModBlockStateProvider.java new file mode 100644 index 0000000..f0c2a38 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModBlockStateProvider.java @@ -0,0 +1,32 @@ +package dev.micle.firefly_bush_backport.data.client; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.block.ModBlocks; +import net.minecraft.data.DataGenerator; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.BlockStateProvider; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Objects; + +public class ModBlockStateProvider extends BlockStateProvider { + public ModBlockStateProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { + super(generator.getPackOutput(), FireflyBushBackport.MOD_ID, existingFileHelper); + } + + @Override + protected void registerStatesAndModels() { + crossEmissiveBlock(ModBlocks.FIREFLY_BUSH); + } + + private void crossEmissiveBlock(RegistryObject block) { + String name = Objects.requireNonNull(block.getId()).getPath(); + simpleBlock(block.get(), models() + .withExistingParent(name, "block/cross_emissive") + .texture("cross", "block/" + name) + .texture("cross_emissive", "block/" + name + "_emissive") + .renderType("cutout") + ); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/data/client/ModItemModelProvider.java b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModItemModelProvider.java new file mode 100644 index 0000000..2277e06 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/data/client/ModItemModelProvider.java @@ -0,0 +1,40 @@ +package dev.micle.firefly_bush_backport.data.client; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.block.ModBlocks; +import net.minecraft.data.DataGenerator; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.ItemModelBuilder; +import net.minecraftforge.client.model.generators.ItemModelProvider; +import net.minecraftforge.client.model.generators.ModelFile; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Objects; + +public class ModItemModelProvider extends ItemModelProvider { + public ModItemModelProvider(DataGenerator generator, ExistingFileHelper existingFileHelper) { + super(generator.getPackOutput(), FireflyBushBackport.MOD_ID, existingFileHelper); + } + + @Override + protected void registerModels() { + ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get).forEach(this::blockItemModel); + } + + private void blockItemModel(Block block) { + String name = Objects.requireNonNull(ForgeRegistries.BLOCKS.getKey(block)).getPath(); + + if (block == ModBlocks.FIREFLY_BUSH.get()) { + builder(getExistingFile(mcLoc("item/generated")), name); + } else if (block.asItem() != Items.AIR) { + withExistingParent(name, modLoc("block/" + name)); + } + } + + private ItemModelBuilder builder(ModelFile itemGenerated, String name) { + return getBuilder(name).parent(itemGenerated).texture("layer0", "item/" + name); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java b/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java new file mode 100644 index 0000000..2904912 --- /dev/null +++ b/src/main/java/dev/micle/firefly_bush_backport/item/ModItems.java @@ -0,0 +1,15 @@ +package dev.micle.firefly_bush_backport.item; + +import dev.micle.firefly_bush_backport.FireflyBushBackport; +import net.minecraft.world.item.Item; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class ModItems { + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, FireflyBushBackport.MOD_ID); + + public static void register(IEventBus modEventBus) { + ITEMS.register(modEventBus); + } +} diff --git a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java index 1c05c97..23ab063 100644 --- a/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java +++ b/src/main/java/dev/micle/firefly_bush_backport/proxy/Proxy.java @@ -1,7 +1,10 @@ package dev.micle.firefly_bush_backport.proxy; import dev.micle.firefly_bush_backport.FireflyBushBackport; +import dev.micle.firefly_bush_backport.block.ModBlocks; import dev.micle.firefly_bush_backport.config.Config; +import dev.micle.firefly_bush_backport.creative_mode_tab.ModCreativeModeTabs; +import dev.micle.firefly_bush_backport.item.ModItems; import net.minecraft.client.Minecraft; import net.minecraft.server.MinecraftServer; import net.minecraft.world.entity.player.Player; @@ -20,10 +23,14 @@ public class Proxy implements IProxy { // Common setup public Proxy() { + IEventBus modEventBus = FireflyBushBackport.getFMLJavaModLoadingContext().getModEventBus(); + Config.register(); + ModBlocks.register(modEventBus); + ModItems.register(modEventBus); + ModCreativeModeTabs.register(modEventBus); // Register mod event bus listeners - IEventBus modEventBus = FireflyBushBackport.getFMLJavaModLoadingContext().getModEventBus(); modEventBus.addListener(Proxy::setup); modEventBus.addListener(Proxy::imcEnqueue); modEventBus.addListener(Proxy::imcProcess); diff --git a/src/main/resources/assets/firefly_bush_backport/lang/en_us.json b/src/main/resources/assets/firefly_bush_backport/lang/en_us.json new file mode 100644 index 0000000..33d8437 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/lang/en_us.json @@ -0,0 +1,4 @@ +{ + "itemGroup.firefly_bush_backport.main": "Firefly Bush Backport", + "block.firefly_bush_backport.firefly_bush": "Firefly Bush" +} \ No newline at end of file diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush1.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush1.ogg new file mode 100644 index 0000000..074c547 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush1.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a806d7c6db801dca0c7dcba2eb8ce82998a4342fc91dc5c86ec85d379f944e26 +size 112586 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush10.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush10.ogg new file mode 100644 index 0000000..2e43294 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush10.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5a81bdc558281d88b1b6caff8a190b01362b2549bc0cf8a568c0bf8a9379361 +size 91283 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush11.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush11.ogg new file mode 100644 index 0000000..e4b35ab --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush11.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d00b585df988ad34dce9b3eb7b769b9b1769308779c9658253b3e6ab10d46dbb +size 92303 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush2.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush2.ogg new file mode 100644 index 0000000..7639dda --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush2.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edf0c441f609102d3196da63850e57e9dbc451657d1a20b61bd3da359c8baf15 +size 58456 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush3.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush3.ogg new file mode 100644 index 0000000..a3a26f5 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush3.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8a0b00bb0753c64e67fb4c43f0c8b45d1247570fa50741faf844fa8343b1df6 +size 133948 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush4.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush4.ogg new file mode 100644 index 0000000..74b7cc1 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush4.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18df05abfd11727fb0bcc7075e48535dd1fb79bd078e22425cd0273ac1e36b1d +size 95953 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush5.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush5.ogg new file mode 100644 index 0000000..f2c9e5b --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush5.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45a66787fbfd5661ef2bb8a6dbe749eb89d2335174ff5cf7c8e749ba80fd243c +size 92090 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush6.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush6.ogg new file mode 100644 index 0000000..f5e0c2c --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush6.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2eb86a0e2586bb11c27a393325393a590a2e3d7f068d057f30faebc60bbad2c +size 99322 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush7.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush7.ogg new file mode 100644 index 0000000..162ecce --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush7.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ada193be3a4be1d70cc3ce59bb3bdcbeae47a9296d68a3b343ab173938c464af +size 59645 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush8.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush8.ogg new file mode 100644 index 0000000..63f4d05 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush8.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:277dc5651c9d50a2bd8d190e26b48a2469e132d6b01055f59d3a9fa6266fcabe +size 98309 diff --git a/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush9.ogg b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush9.ogg new file mode 100644 index 0000000..c2cec11 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/sounds/block/firefly_bush/firefly_bush9.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf2b9dfda71bdc3541679cce08ad1a4feee82258f3660aad726471d707a8f7d2 +size 85748 diff --git a/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush.png b/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush.png new file mode 100644 index 0000000..153c8fe --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8561248bf33ef1dea7ed84a16b3623aa7a974a707c06b3b2a161a122cbe1600 +size 224 diff --git a/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush_emissive.png b/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush_emissive.png new file mode 100644 index 0000000..3218f92 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush_emissive.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9519a8118504163df75438045befeaa440778bbb7c91f38066729be326358399 +size 188 diff --git a/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush_emissive.png.mcmeta b/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush_emissive.png.mcmeta new file mode 100644 index 0000000..8e55e43 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/textures/block/firefly_bush_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/src/main/resources/assets/firefly_bush_backport/textures/item/firefly_bush.png b/src/main/resources/assets/firefly_bush_backport/textures/item/firefly_bush.png new file mode 100644 index 0000000..f9b9015 --- /dev/null +++ b/src/main/resources/assets/firefly_bush_backport/textures/item/firefly_bush.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3b6d7188b43667e73c290eaf0f3e692edc6dc13249d92008f4a0ec1348ef239 +size 227 diff --git a/src/main/resources/assets/minecraft/models/block/cross_emissive.json b/src/main/resources/assets/minecraft/models/block/cross_emissive.json new file mode 100644 index 0000000..5882091 --- /dev/null +++ b/src/main/resources/assets/minecraft/models/block/cross_emissive.json @@ -0,0 +1,46 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#cross" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" } + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "light_emission": 15, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "light_emission": 15, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross_emissive" } + } + } + ] +}