Compare commits

..

No commits in common. "fc101a90df9235da718aebe28f0a874abdf0258c" and "e125e80e8c56d6026fd161f5ee01639228d55097" have entirely different histories.

39 changed files with 135 additions and 350 deletions

View file

@ -6,23 +6,33 @@ plugins {
id 'net.neoforged.gradle.userdev' version '7.0.96'
}
def buildSuffix = System.getenv('BUILD_NUMBER') ? "-b${System.getenv('BUILD_NUMBER')}" : ""
version = "$mod_version+mc${game_version}${buildSuffix}"
version = "$mod_version"
group = "de.ellpeck.actuallyadditions"
base {
archivesName = "ActuallyAdditions"
archivesName = "ActuallyAdditions-$game_version"
}
if (System.getenv('BUILD_NUMBER') != null) {
version += "." + System.getenv('BUILD_NUMBER')
}
// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
if (rootProject.file('src/main/resources/META-INF/accesstransformer.cfg').exists()) {
minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg')
}
//minecraft.accessTransformers.entry public net.minecraft.client.Minecraft textureManager # textureManager
runs {
// applies to all the run configs below
configureEach { net.neoforged.gradle.dsl.common.runs.run.Run run ->
// Recommended logging data for a userdev environment
systemProperty 'forge.logging.markers', 'REGISTRIES'
// Recommended logging level for the console
systemProperty 'forge.logging.console.level', 'debug'
//Limit ram usage for the dev environment to 4GB
jvmArgument '-Xmx4G'
@ -83,6 +93,20 @@ dependencies {
runtimeOnly "curse.maven:mekanism-268560:5155329"
}
// not sure if this is still needed
//processResources {
// inputs.property('version', project.version)
//
// from(sourceSets.main.resources.srcDirs) {
// include 'META-INF/mods.toml'
// expand 'version': project.version
// }
//
// from(sourceSets.main.resources.srcDirs) {
// exclude 'META-INF/mods.toml'
// }
//}
jar {
group = 'artifact'
manifest {
@ -90,27 +114,12 @@ jar {
"Specification-Version" : "1",
"Implementation-Title" : project.archivesBaseName,
"Implementation-Version" : project.version,
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
"Modloader": "Neoforge",
"Modloader-Version": project.neo_version,
])
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")],)
}
from sourceSets.main.output
}
processResources {
inputs.property('version', project.version)
inputs.property('neo_version_range', project.neo_version_range)
inputs.property('loader', project.loader)
inputs.property('minecraft_version_range', project.minecraft_version_range)
filesMatching(['META-INF/mods.toml']) {
expand 'version': project.version, 'neo_version_range': project.neo_version_range, 'loader': project.loader, 'minecraft_version_range': project.minecraft_version_range
}
}
task apiJar(type: Jar) {
from sourceSets.main.output
from sourceSets.main.java

View file

@ -2,17 +2,13 @@ org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
# Actually Additions
# TODO: check this version change is okay.
mod_version=1.1.52
# Forge
game_version=1.20.4
neo_version=20.4.190
# mods.toml
loader=2
neo_version_range=[20.4.190,)
minecraft_version_range=[1.20.4,1.21)
# Parchment (Mappings)
neogradle.subsystems.parchment.minecraftVersion=1.20.4
neogradle.subsystems.parchment.mappingsVersion=2024.02.25

View file

@ -1,4 +1,4 @@
// 1.20.4 2024-03-06T18:38:03.9906633 Item Recipes
// 1.20.4 2024-03-04T22:51:31.6049301 Item Recipes
d374edde9294d1a224b4b5610b50117a11328c00 data/actuallyadditions/recipes/advanced_coil.json
f67629e45d152c96f3467a90a67520f78ecf9f07 data/actuallyadditions/recipes/advanced_leaf_blower.json
d65e5a70232fa2f0e74d2a67c1cd4b0e87124242 data/actuallyadditions/recipes/basic_coil.json
@ -55,11 +55,9 @@ bbda1becc270cf13e6b1d8e6d873aafa0951552d data/actuallyadditions/recipes/lens_of_
4a76fa84033e80532494163fc35f60c44bdb67b5 data/actuallyadditions/recipes/player_probe.json
2f24905a9d4b0e5d3d5ecbc5a7fa3a7647f41619 data/actuallyadditions/recipes/quadruple_battery.json
80a2e4f402acab5da96bdf3acd459fce0f930c08 data/actuallyadditions/recipes/quintuple_battery.json
c6ff81ba878c02651a9353e490b3a8f9897a5410 data/actuallyadditions/recipes/rice_dough.json
5958ff2fb37430660fb22012212336320ee83dd8 data/actuallyadditions/recipes/rice_seeds.json
f6c73cb2e41a8a21e2fda888b28bf52672b33d2e data/actuallyadditions/recipes/rice_slime.json
319b2d0423b79497837f5a3f940011b3bccf09f3 data/actuallyadditions/recipes/rice_slime_potion.json
2bd92dcc8b63d8577d804d172321d3a47c4b001d data/actuallyadditions/recipes/ring.json
dd9f1f6cf00985f75ef5deee8e138c533e81db1a data/actuallyadditions/recipes/ring_of_growth.json
764d4f63e1d978d02419d30d2ad845b914e594c0 data/actuallyadditions/recipes/ring_of_magnetizing.json
fc0a5281fc77edde16f22165e164f73dd28d7fcd data/actuallyadditions/recipes/single_battery.json

View file

@ -1,4 +1,4 @@
// 1.20.4 2024-03-06T18:38:03.9956221 Recipes
// 1.20.4 2024-03-04T22:51:31.6159299 Recipes
4d3128b37a7153882a9324cda49b5069207561c5 data/actuallyadditions/recipes/atomic_reconstructor.json
b0367f5012651764931e8b8fd0c5bcca4e8614c0 data/actuallyadditions/recipes/battery_box.json
fe704716268e01ca8aeeb92196d9f660b9e08640 data/actuallyadditions/recipes/black_quartz_brick_slab.json
@ -13,13 +13,9 @@ db1978ab59369dd3c10e719073b7035acf33885c data/actuallyadditions/recipes/black_qu
86b8c5e857cf1b00e154b5f798a3e837e6a05333 data/actuallyadditions/recipes/chiseled_black_quartz_slab.json
506d2ad2f3109a6640a35ef1a2143b16793414ba data/actuallyadditions/recipes/chiseled_black_quartz_stair.json
2e9233449531a074984b443ceef0ad782f82eaed data/actuallyadditions/recipes/chiseled_black_quartz_wall.json
f1bbeaed1616b92ee345860fedb789e0aaa74a0f data/actuallyadditions/recipes/coffee_machine.json
e14dd51bd5ccda096d709d8b3633828784a720f4 data/actuallyadditions/recipes/diamatine_crystal_block.json
49e378923a797d89b3c3c46bef00f2a347ded250 data/actuallyadditions/recipes/display_stand.json
d7a4254f48cd9043def96f7d606e237d5c5119b9 data/actuallyadditions/recipes/emeradic_crystal_block.json
7c9a004460b6eb6c6e07cedfa086294d59e5eec5 data/actuallyadditions/recipes/empowerer.json
5801963cf623f873cdb254513c1b4b5ec319dd74 data/actuallyadditions/recipes/ender_casing.json
d69c14b97aaac6879055503487e0ffe83409fa82 data/actuallyadditions/recipes/enori_crystal_block.json
b2eefc77a753cbb650a879a9d30d833fc154dc58 data/actuallyadditions/recipes/ethetic_green_slab.json
1171daf9cf5402c9c47a9f2f370d5924ebddef5e data/actuallyadditions/recipes/ethetic_green_stairs.json
0e57ac576603b7c6aeef7709d2e669e3dacbe5f2 data/actuallyadditions/recipes/ethetic_green_wall.json
@ -35,13 +31,10 @@ ff81da8a0f6632779414c0512100696a11771814 data/actuallyadditions/recipes/hopping_
92323ba7b5459abe64c06fff502d44384f64f361 data/actuallyadditions/recipes/laser_relay_advanced.json
31a2978ae8260ead579c6c920be0e40c6036498d data/actuallyadditions/recipes/laser_relay_extreme.json
4acb117a6727554073a78ed81bcd2b0b1af53bec data/actuallyadditions/recipes/laser_relay_item_advanced.json
728b2883a9325d8d5d7835d8e41af1426813f0a6 data/actuallyadditions/recipes/palis_crystal_block.json
e4ae5117c38f8c38371dd084ceb72b1910b7a34a data/actuallyadditions/recipes/restonia_crystal_block.json
532a454741e8068941f1f3c44f3be257530db8c3 data/actuallyadditions/recipes/shock_suppressor.json
7fa363b3afe88f3ffac1b9f85f59c6a291d59544 data/actuallyadditions/recipes/smooth_black_quartz_slab.json
892f9867958c77a0577adcfd8ce3f8da108ecd3e data/actuallyadditions/recipes/smooth_black_quartz_stair.json
42f29136de744f0e3629f1094136480a50bb571e data/actuallyadditions/recipes/smooth_black_quartz_wall.json
bc3278bd2913d84faa511ec4668fdcb7052234a0 data/actuallyadditions/recipes/tiny_torch.json
f6fe7bd7ee491106a0486211a6dc782e965102d8 data/actuallyadditions/recipes/vertical_digger.json
6b63c99b4fbe11ee0aee38551205be3b1dd64d52 data/actuallyadditions/recipes/void_crystal_block.json
d5067865e97d33de5b828bc3bc5a2fcc8a16ea89 data/actuallyadditions/recipes/wood_casing.json

View file

@ -1,4 +1,4 @@
// 1.20.4 2024-03-06T18:25:03.3664612 Item Models: actuallyadditions
// 1.20.4 2024-03-05T23:33:24.583284 Item Models: actuallyadditions
1966de13838437bc6035f3649976a44797cf5144 assets/actuallyadditions/models/item/advanced_coil.json
24594fc68e66011dc2d7b79b92c94b387e710318 assets/actuallyadditions/models/item/advanced_leaf_blower.json
ba2d814e269cdef72e1045f200b3c20ed6961517 assets/actuallyadditions/models/item/atomic_reconstructor.json
@ -35,7 +35,6 @@ c73981382d646e4a0186b26fcfad817d39252055 assets/actuallyadditions/models/item/ch
2f943a7dfad9dee932b0c943c52a1490a625fdb9 assets/actuallyadditions/models/item/coffee_cup.json
a67f1795e1ad1d6ed19f2a35f176f39e00dbb9c3 assets/actuallyadditions/models/item/coffee_machine.json
523148eac33929fb0d2892856a5ddcb784043bb5 assets/actuallyadditions/models/item/crafter_on_a_stick.json
89cc79420e3a7c2952ce729537b7503a517bb9de assets/actuallyadditions/models/item/crate_keeper.json
9bc734dadf9d5b85b8cc5685b673a1d074cf3d6d assets/actuallyadditions/models/item/crusher.json
4b7ef5dd15d930d4b0b5507cd08c27cb5ee1498a assets/actuallyadditions/models/item/crusher_double.json
a38461a8a2056640674708a32548701b9c77bac3 assets/actuallyadditions/models/item/crystallized_canola_seed.json
@ -47,6 +46,7 @@ e669eeb5832e40fd782df0f3ba89a27d3cadb9d3 assets/actuallyadditions/models/item/di
3318c3bb118ee0bb1008a936c72ec80dcaf59b8c assets/actuallyadditions/models/item/diamond_aiot.json
11e4961bde9e6900dc90a833108060a774783df6 assets/actuallyadditions/models/item/display_stand.json
2ed3d6a7d3b292d765616e09ca0fe03810ad80eb assets/actuallyadditions/models/item/double_battery.json
21407d7ee7e6a9afd4841e0c5f335166d00c8edc assets/actuallyadditions/models/item/dough.json
2669dbeb32101f50763c9cd7f71f5b401461dc18 assets/actuallyadditions/models/item/drill_black.json
1b836004c51c7730cb9e2b21f6e6deb036d2274e assets/actuallyadditions/models/item/drill_blue.json
aa33fb2f609dfd580a0170bf59472b42430aec44 assets/actuallyadditions/models/item/drill_brown.json
@ -172,6 +172,7 @@ cf5417e23f9eab2ce0560c4fd4c6b53940ba01b1 assets/actuallyadditions/models/item/le
1a4ec0f6ed3b9b741438be7d4388676c92d0d3c1 assets/actuallyadditions/models/item/palis_crystal_block.json
df692efd0af52a6b3eef1332cb2e6b5469e47dbf assets/actuallyadditions/models/item/palis_crystal_cluster.json
046fa6e050fdaeadca8da1335be501705fa84723 assets/actuallyadditions/models/item/palis_crystal_shard.json
29958f60555c7c12e36831dcc69504c8d8b52357 assets/actuallyadditions/models/item/paper_cone.json
158760d91cbb130b57b457e673e4b936b337ffc1 assets/actuallyadditions/models/item/phantom_booster.json
b393ea03ae008aca117e8f7aa5a2d69ef36b827b assets/actuallyadditions/models/item/phantom_breaker.json
2e3aa5aed20b31941e10b8ae868153f25aeadde4 assets/actuallyadditions/models/item/phantom_connector.json

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "actuallyadditions:item/crate_keeper"
"layer0": "actuallyadditions:item/dough"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "actuallyadditions:item/paper_cone"
}
}

View file

@ -1,26 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"C": {
"item": "actuallyadditions:coffee_beans"
},
"I": {
"item": "actuallyadditions:iron_casing"
},
"V": {
"item": "actuallyadditions:void_crystal"
},
"X": {
"item": "actuallyadditions:basic_coil"
}
},
"pattern": [
" C ",
" I ",
"XVX"
],
"result": {
"item": "actuallyadditions:coffee_machine"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"Q": {
"item": "actuallyadditions:diamatine_crystal"
}
},
"pattern": [
"QQQ",
"QQQ",
"QQQ"
],
"result": {
"item": "actuallyadditions:diamatine_crystal_block"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"Q": {
"item": "actuallyadditions:emeradic_crystal"
}
},
"pattern": [
"QQQ",
"QQQ",
"QQQ"
],
"result": {
"item": "actuallyadditions:emeradic_crystal_block"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"Q": {
"item": "actuallyadditions:enori_crystal"
}
},
"pattern": [
"QQQ",
"QQQ",
"QQQ"
],
"result": {
"item": "actuallyadditions:enori_crystal_block"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"Q": {
"item": "actuallyadditions:palis_crystal"
}
},
"pattern": [
"QQQ",
"QQQ",
"QQQ"
],
"result": {
"item": "actuallyadditions:palis_crystal_block"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"Q": {
"item": "actuallyadditions:restonia_crystal"
}
},
"pattern": [
"QQQ",
"QQQ",
"QQQ"
],
"result": {
"item": "actuallyadditions:restonia_crystal_block"
}
}

View file

@ -1,19 +0,0 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
{
"item": "actuallyadditions:rice"
},
{
"item": "actuallyadditions:rice"
},
{
"item": "actuallyadditions:rice"
}
],
"result": {
"count": 2,
"item": "actuallyadditions:rice_dough"
}
}

View file

@ -1,23 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"D": {
"tag": "forge:dusts/glowstone"
},
"G": {
"tag": "forge:ingots/gold"
},
"I": {
"tag": "forge:ingots/iron"
}
},
"pattern": [
"IGI",
"GDG",
"IGI"
],
"result": {
"item": "actuallyadditions:ring"
}
}

View file

@ -1,17 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"Q": {
"item": "actuallyadditions:void_crystal"
}
},
"pattern": [
"QQQ",
"QQQ",
"QQQ"
],
"result": {
"item": "actuallyadditions:void_crystal_block"
}
}

View file

@ -222,23 +222,8 @@ public class BlockRecipeGenerator extends RecipeProvider {
.define('S', ActuallyItems.EMPOWERED_DIAMATINE_CRYSTAL.get())
.save(recipeOutput);
//Coffee Maker
Recipe.shaped(ActuallyBlocks.COFFEE_MACHINE.getItem())
.pattern(" C ", " I ", "XVX")
.define('C', ActuallyItems.COFFEE_BEANS)
.define('I', ActuallyBlocks.IRON_CASING.getItem())
.define('X', ActuallyItems.BASIC_COIL.get())
.define('V', ActuallyItems.VOID_CRYSTAL.get())
.save(recipeOutput);
// Crystal Blocks
Recipe.block(ActuallyBlocks.RESTONIA_CRYSTAL.getItem(), ActuallyItems.RESTONIA_CRYSTAL.get(), recipeOutput);
Recipe.block(ActuallyBlocks.PALIS_CRYSTAL.getItem(), ActuallyItems.PALIS_CRYSTAL.get(), recipeOutput);
Recipe.block(ActuallyBlocks.DIAMATINE_CRYSTAL.getItem(), ActuallyItems.DIAMATINE_CRYSTAL.get(), recipeOutput);
Recipe.block(ActuallyBlocks.ENORI_CRYSTAL.getItem(), ActuallyItems.ENORI_CRYSTAL.get(), recipeOutput);
Recipe.block(ActuallyBlocks.VOID_CRYSTAL.getItem(), ActuallyItems.VOID_CRYSTAL.get(), recipeOutput);
Recipe.block(ActuallyBlocks.EMERADIC_CRYSTAL.getItem(), ActuallyItems.EMERADIC_CRYSTAL.get(), recipeOutput);
}
public static class Recipe {
@ -270,10 +255,6 @@ public class BlockRecipeGenerator extends RecipeProvider {
Recipe.shaped(result).patternSingleKey('Q', resource, "QQQ").save(consumer);
}
public static void block(ItemLike result, ItemLike resource, RecipeOutput consumer) {
Recipe.shaped(result).patternSingleKey('Q', resource, "QQQ", "QQQ", "QQQ").save(consumer);
}
private static class Shapeless extends ShapelessRecipeBuilder {
public Shapeless(ItemLike result) {
this(result, 1);

View file

@ -30,7 +30,6 @@ public class ItemModelGenerator extends ItemModelProvider {
protected void registerModels() {
// Items
simpleItem(ActuallyItems.ITEM_BOOKLET); // will require complex I think
simpleItem(ActuallyItems.CRATE_KEEPER);
// All items?
ActuallyItems.SIMPLE_ITEMS.forEach(this::simpleItem);

View file

@ -451,19 +451,6 @@ public class ItemRecipeGenerator extends RecipeProvider {
.requires(ActuallyItems.RICE.get())
.save(recipeOutput);
//Rice Dough
Recipe.shapeless(ActuallyItems.RICE_DOUGH.get(), 2)
.requires(ActuallyItems.RICE.get(), 3)
.save(recipeOutput);
//Ring, glow stone dust in the middle, iron in the corners, gold in the cardinals.
Recipe.shaped(ActuallyItems.RING)
.pattern("IGI", "GDG", "IGI")
.define('I', Tags.Items.INGOTS_IRON)
.define('G', Tags.Items.INGOTS_GOLD)
.define('D', Tags.Items.DUSTS_GLOWSTONE)
.save(recipeOutput);
//Cup
Recipe.shaped(ActuallyItems.EMPTY_CUP.get())
.pattern("S S", "SCS", "SSS")

View file

@ -1,6 +1,5 @@
package de.ellpeck.actuallyadditions.mod;
import de.ellpeck.actuallyadditions.mod.attachments.ActuallyAttachments;
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import net.minecraft.core.registries.Registries;
@ -9,15 +8,10 @@ import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.ItemStack;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.energy.EnergyStorage;
import net.neoforged.neoforge.energy.IEnergyStorage;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors;
public class ActuallyTabs {
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ActuallyAdditions.MODID);
@ -27,19 +21,12 @@ public class ActuallyTabs {
.withTabsBefore(CreativeModeTabs.SPAWN_EGGS)
.title(Component.translatable("itemGroup.actuallyadditions"))
.displayItems((parameters, output) -> {
List<ItemStack> stacks = ActuallyItems.ITEMS.getEntries().stream().map(reg -> new ItemStack(reg.get())).collect(Collectors.toList());
//Add charged versions of all energy items
List<ItemStack> charged = ActuallyItems.ITEMS.getEntries().stream().map(reg -> new ItemStack(reg.get()))
.filter(stack -> stack.getItem() instanceof ItemEnergy).toList();
charged.forEach(stack -> {
List<ItemStack> stacks = ActuallyItems.ITEMS.getEntries().stream().map(reg -> new ItemStack(reg.get())).toList();
stacks.forEach(stack -> {
if(stack.getItem() instanceof ItemEnergy itemEnergy) {
EnergyStorage storage = new EnergyStorage(itemEnergy.maxPower, itemEnergy.transfer, itemEnergy.transfer, itemEnergy.maxPower);
stack.setData(ActuallyAttachments.ENERGY_STORAGE.get(), storage);
stack.getOrCreateTag().putDouble("Energy", itemEnergy.getMaxEnergyStored(stack));
}
});
stacks.addAll(charged);
output.acceptAll(stacks);
}).build());

View file

@ -1,12 +1,9 @@
package de.ellpeck.actuallyadditions.mod.attachments;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
import de.ellpeck.actuallyadditions.mod.tile.CustomEnergyStorage;
import net.minecraft.world.item.ItemStack;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.attachment.AttachmentType;
import net.neoforged.neoforge.energy.EnergyStorage;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.neoforged.neoforge.registries.NeoForgeRegistries;
@ -15,30 +12,8 @@ import java.util.function.Supplier;
public class ActuallyAttachments {
private static final DeferredRegister<AttachmentType<?>> ATTACHMENT_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.ATTACHMENT_TYPES, ActuallyAdditions.MODID);
public static final Supplier<AttachmentType<EnergyStorage>> ENERGY_STORAGE = ATTACHMENT_TYPES.register(
"energy", ActuallyAttachments.itemEnergyStorageAttachment());
/*
* This is a supplier for an attachment type that can be used to attach an energy storage to an item.
* Implementation is based on EnderIO's https://github.com/Team-EnderIO/EnderIO/blob/e1f022df745131ed5fea718bd860880a5785d4c7/src/core/java/com/enderio/core/common/attachment/AttachmentUtil.java#L47-L60
*/
public static Supplier<AttachmentType<EnergyStorage>> itemEnergyStorageAttachment() {
return () -> AttachmentType.serializable(holder -> {
if (holder instanceof ItemStack itemStack) {
int capacity = 1000;
int maxTransfer = 1000;
if (itemStack.getItem() instanceof ItemEnergy itemEnergy) {
capacity = itemEnergy.maxPower;
maxTransfer = itemEnergy.transfer;
}
return new EnergyStorage(capacity, maxTransfer, maxTransfer);
} else {
throw new IllegalStateException("Cannot attach energy handler item to a non-item.");
}
}).build();
}
public static final Supplier<AttachmentType<CustomEnergyStorage>> ENERGY_STORAGE = ATTACHMENT_TYPES.register(
"energy", () -> AttachmentType.serializable((holder) -> new CustomEnergyStorage(250000, 1000, 1000)).build());
public static void init(IEventBus evt) {
ATTACHMENT_TYPES.register(evt);

View file

@ -63,12 +63,17 @@ public class RenderBatteryBox implements BlockEntityRenderer<TileEntityBatteryBo
int j = (int) (backgroundOpacity * 255.0F) << 24;
for (int i = 0; i < 4; i++) {
Matrix4f pose = matrices.last().pose();
font.drawInBatch(energyTotal, -font.width(energyTotal) / 2F, 10F, 0xFFFFFF, false, pose, buffer, Font.DisplayMode.NORMAL, j, combinedLight);
font.drawInBatch(energyName, -font.width(energyName) / 2F, 20F, 0xFFFFFF, false, pose, buffer, Font.DisplayMode.NORMAL, j, combinedLight);
matrices.pushPose();
matrices.translate(-60F, 0F, 60F);
matrices.mulPose(Axis.YP.rotationDegrees(90));
Matrix4f pose = matrices.last().pose();
font.drawInBatch(energyTotal, -font.width(energyTotal) / 2F, 10F, 0, false, pose, buffer, Font.DisplayMode.SEE_THROUGH, j, combinedLight, true);
font.drawInBatch(energyName, -font.width(energyTotal) / 2F, 20F, 0, false, pose, buffer, Font.DisplayMode.SEE_THROUGH, j, combinedLight, true);
// font.draw(matrices, energyTotal, -font.width(energyTotal) / 2F, 10F, 0xFFFFFF);
// font.draw(matrices, energyName, -font.width(energyName) / 2F, 20F, 0xFFFFFF);
matrices.popPose();
}
});

View file

@ -20,17 +20,16 @@ public class CommonConfig {
}
public static class ItemSettings {
public static ModConfigSpec.ConfigValue<List<? extends String>> DRILL_EXTRA_MINING_WHITELIST;
public static ModConfigSpec.ConfigValue<List<String>> DRILL_EXTRA_MINING_WHITELIST;
public static void build() {
BUILDER.comment("Item settings").push("itemsSettings");
// TODO: Tags!
DRILL_EXTRA_MINING_WHITELIST = BUILDER
.comment("By default, the Drill can mine certain blocks. If there is one that it can't mine, but should be able to, put its REGISTRY NAME here. These are the actual registered Item Names, the ones you use, for example, when using the /give Command.")
.defineList("Drill Extra Whitelist", new ArrayList<>() {{
.define("Drill Extra Whitelist", new ArrayList<String>() {{
add("TConstruct:GravelOre");
}}, (o) -> o instanceof String);
}});
BUILDER.pop();
}
@ -142,8 +141,8 @@ public class CommonConfig {
MOST_BLAND_PERSON_EVER = BUILDER.comment("If you want to be really boring and lame, you can turn on this setting to disable colored names on Actually Additions items. Because why would you want things to look pretty anyways, right?")
.define("noColoredItemNames", false); //TODO is this still needed?
REDSTONECONFIGURATOR = BUILDER.comment("define the item used to configure Redstone Mode").define("redstoneConfigurator", "minecraft:redstone_torch");
RELAYCONFIGURATOR = BUILDER.comment("define the item used to configure Direction in laser relays").define("relayConfigurator", "minecraft:compass");
REDSTONECONFIGURATOR = BUILDER.comment("define the item used to configure Redstone Mode").define("redstoneConfigurator", "minecraft:redstone_torch", obj -> obj instanceof String);
RELAYCONFIGURATOR = BUILDER.comment("define the item used to configure Direction in laser relays").define("relayConfigurator", "minecraft:compass", obj -> obj instanceof String);
BUILDER.pop();
}

View file

@ -19,7 +19,6 @@ import de.ellpeck.actuallyadditions.mod.data.WorldData;
import de.ellpeck.actuallyadditions.mod.inventory.gui.EnergyDisplay;
import de.ellpeck.actuallyadditions.mod.tile.IEnergyDisplay;
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
@ -38,7 +37,6 @@ import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.neoforge.client.event.RenderGuiOverlayEvent;
import net.neoforged.neoforge.client.event.RenderLevelStageEvent;
import net.neoforged.neoforge.client.gui.overlay.GuiOverlayManager;
import net.neoforged.neoforge.event.TickEvent;
import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent;
@ -229,11 +227,4 @@ public class ClientEvents {
}
}
/* @SubscribeEvent //TODO someday move the laser rendering to a new system
public void onRenderStage(final RenderLevelStageEvent event) {
if(event.getStage() == RenderLevelStageEvent.Stage.AFTER_SOLID_BLOCKS) {
AssetUtil.renderLaser();
}
}*/
}

View file

@ -25,7 +25,6 @@ import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.ClickType;
import net.minecraft.world.inventory.ContainerListener;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import net.neoforged.api.distmarker.Dist;
@ -106,12 +105,13 @@ public class SackContainer extends AbstractContainerMenu implements IButtonReact
}
}
/* @Override
@Override
public void broadcastChanges() { // TODO is this needed anymore?
super.broadcastChanges();
if (this.filter.needsUpdateSend() || this.autoInsert != this.oldAutoInsert) {
for (ContainerListener listener : this..containerListeners) {
/*
for (IContainerListener listener : this.containerListeners) {
listener.setContainerData(this, 0, this.filter.isWhitelist
? 1
: 0);
@ -129,6 +129,7 @@ public class SackContainer extends AbstractContainerMenu implements IButtonReact
? 1
: 0);
}
*/
this.filter.updateLasts();
this.oldAutoInsert = this.autoInsert;
}
@ -144,7 +145,7 @@ public class SackContainer extends AbstractContainerMenu implements IButtonReact
} else if (id == 2) {
this.filter.respectMod = data == 1;
}
}*/
}
@Override
public ItemStack quickMoveStack(@Nonnull Player player, int slot) {

View file

@ -41,17 +41,11 @@ public class FilterSettingsGui {
public FilterSettingsGui(FilterSettings settings, int x, int y, Consumer<AbstractButton> buttonConsumer, int idOffset) {
this.theSettings = settings;
this.whitelistButton = Button.builder(Component.literal("WH"), $ -> {
theSettings.isWhitelist = !theSettings.isWhitelist;
buttonClicked(idOffset);
})
this.whitelistButton = Button.builder(Component.literal("WH"), $ -> buttonClicked(idOffset))
.bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.whitelistButton);
y += 14;
this.modButton = Button.builder(Component.literal("MO"), $ -> {
theSettings.respectMod = !theSettings.respectMod;
buttonClicked(idOffset + 1);
})
this.modButton = Button.builder(Component.literal("MO"), $ -> buttonClicked(idOffset + 1))
.bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.modButton);

View file

@ -38,7 +38,7 @@ public class GuiDrill extends AAScreen<ContainerDrill> {
@Override
public void renderLabels(@Nonnull GuiGraphics guiGraphics, int x, int y) {
AssetUtil.displayNameString(guiGraphics, this.font, this.imageWidth, -10, I18n.get("container." + ActuallyAdditions.MODID + ".drill"));
AssetUtil.displayNameString(guiGraphics, this.font, this.imageWidth, -10, I18n.get("container." + ActuallyAdditions.MODID + ".drill.name"));
}
@Override

View file

@ -52,7 +52,7 @@ public class SackGui extends AAScreen<SackContainer> {
public void init() {
super.init();
this.filter = new FilterSettingsGui(this.container.filter, this.leftPos + 137, this.topPos + 10, this::addRenderableWidget, 1);
this.filter = new FilterSettingsGui(this.container.filter, this.leftPos + 138, this.topPos + 10, this::addRenderableWidget, 1);
this.buttonAutoInsert = Button.builder(
Component.literal("I")

View file

@ -40,6 +40,8 @@ public final class ActuallyItems {
// MISC ITEMS
public static final DeferredItem<ItemBase> CANOLA = ITEMS.register("canola", () -> new ItemBase());
public static final DeferredItem<ItemCoffee> COFFEE_CUP = ITEMS.register("coffee_cup", () -> new ItemCoffee());
public static final DeferredItem<ItemBase> PAPER_CONE = ITEMS.register("paper_cone", () -> new ItemBase());
public static final DeferredItem<ItemBase> DOUGH = ITEMS.register("dough", () -> new ItemBase());
public static final DeferredItem<ItemBase> RING = ITEMS.register("ring", () -> new ItemBase());
public static final DeferredItem<ItemBase> BASIC_COIL = ITEMS.register("basic_coil", () -> new ItemBase());
public static final DeferredItem<ItemBase> ADVANCED_COIL = ITEMS.register("advanced_coil", () -> new ItemBase());
@ -190,7 +192,7 @@ public final class ActuallyItems {
// The rest?
RESTONIA_CRYSTAL_SHARD, PALIS_CRYSTAL_SHARD, DIAMATINE_CRYSTAL_SHARD, VOID_CRYSTAL_SHARD, EMERADIC_CRYSTAL_SHARD,
ENORI_CRYSTAL_SHARD, ENGINEERS_GOGGLES, ENGINEERS_GOGGLES_ADVANCED, LASER_UPGRADE_RANGE, LASER_UPGRADE_INVISIBILITY,
HANDHELD_FILLER, TRAVELERS_SACK, VOID_SACK, PLAYER_PROBE, FILTER, WATER_BOWL,
HANDHELD_FILLER, TRAVELERS_SACK, VOID_SACK, PLAYER_PROBE, FILTER, WATER_BOWL, PAPER_CONE, DOUGH,
RING, BASIC_COIL, ADVANCED_COIL, RICE_DOUGH, TINY_COAL, TINY_CHARCOAL, RICE_SLIMEBALL, CANOLA, EMPTY_CUP,
BATS_WING, DRILL_CORE, LENS, ENDER_STAR, CRYSTALLIZED_CANOLA_SEED, EMPOWERED_CANOLA_SEED, LENS_OF_COLOR,
LENS_OF_DETONATION, LENS_OF_CERTAIN_DEATH, LENS_OF_THE_KILLER, LENS_OF_DISENCHANTING, LENS_OF_THE_MINER,

View file

@ -59,6 +59,7 @@ import net.neoforged.neoforge.items.IItemHandler;
import net.neoforged.neoforge.items.IItemHandlerModifiable;
public class DrillItem extends ItemEnergy {
public static final int HARVEST_LEVEL = 4;
private static final int ENERGY_USE = 100;
@ -160,12 +161,14 @@ public class DrillItem extends ItemEnergy {
* @return The Upgrade, if it's installed
*/
public ItemStack getHasUpgradeAsStack(ItemStack stack, ItemDrillUpgrade.UpgradeType upgrade) {
CompoundTag compound = stack.getOrCreateTag();
ItemStackHandlerAA inv = new ItemStackHandlerAA(ContainerDrill.SLOT_AMOUNT);
loadSlotsFromNBT(inv, stack);
for (int i = 0; i < inv.getSlots(); i++) {
ItemStack slotStack = inv.getStackInSlot(i);
if (StackUtil.isValid(slotStack) && slotStack.getItem() instanceof ItemDrillUpgrade drillUpgrade) {
if (drillUpgrade.type == upgrade) {
if (StackUtil.isValid(slotStack) && slotStack.getItem() instanceof ItemDrillUpgrade) {
if (((ItemDrillUpgrade) slotStack.getItem()).type == upgrade) {
return slotStack;
}
}
@ -210,8 +213,11 @@ public class DrillItem extends ItemEnergy {
@Override
public float getDestroySpeed(ItemStack stack, BlockState state) {
if(!state.is(ActuallyTags.Blocks.MINEABLE_WITH_DRILL))
return 1.0F;
return this.getEnergyStored(stack) >= this.getEnergyUsePerBlock(stack)
? (this.hasExtraWhitelist(state.getBlock()) || state.is(ActuallyTags.Blocks.MINEABLE_WITH_DRILL))
? (this.hasExtraWhitelist(state.getBlock()))
? this.getEfficiencyFromUpgrade(stack)
: 1.0F
: 0.1F;

View file

@ -33,8 +33,8 @@ import java.util.Optional;
public abstract class ItemEnergy extends ItemBase {
public final int maxPower;
public final int transfer;
private final int maxPower;
private final int transfer;
public ItemEnergy(int maxPower, int transfer) {
super(ActuallyItems.defaultProps().stacksTo(1));
@ -51,12 +51,12 @@ public abstract class ItemEnergy extends ItemBase {
@Override
public void appendHoverText(ItemStack stack, @Nullable Level worldIn, List<Component> tooltip, TooltipFlag flagIn) {
super.appendHoverText(stack, worldIn, tooltip, flagIn);
IEnergyStorage storage = stack.getCapability(Capabilities.EnergyStorage.ITEM);
if(storage != null) {
int energy = storage.getEnergyStored();
NumberFormat format = NumberFormat.getInstance();
tooltip.add(Component.translatable("misc.actuallyadditions.power_long", format.format(energy), format.format(storage.getMaxEnergyStored())));
int energy = 0;
if (stack.hasTag() && stack.getTag().contains("Energy")) {
energy = stack.getTag().getInt("Energy");
}
NumberFormat format = NumberFormat.getInstance();
tooltip.add(Component.translatable("misc.actuallyadditions.power_long", format.format(energy), format.format(this.maxPower)));
}
@Override
@ -83,11 +83,11 @@ public abstract class ItemEnergy extends ItemBase {
@Override
public int getBarWidth(ItemStack stack) {
IEnergyStorage storage = stack.getCapability(Capabilities.EnergyStorage.ITEM);
if (storage != null) {
return Math.round((13.0F / storage.getMaxEnergyStored() * storage.getEnergyStored()));
if (stack.hasData(ActuallyAttachments.ENERGY_STORAGE)) {
CustomEnergyStorage storage = stack.getData(ActuallyAttachments.ENERGY_STORAGE);
return Math.round(13.0F - (float)storage.getEnergyStored() * 13.0F / storage.getMaxEnergyStored());
}
return 0;
return 1;
}
@Override
@ -103,7 +103,7 @@ public abstract class ItemEnergy extends ItemBase {
}
public void setEnergy(ItemStack stack, int energy) {
Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM)).ifPresent(cap -> {
Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null)).ifPresent(cap -> {
if (cap instanceof CustomEnergyStorage) {
((CustomEnergyStorage) cap).setEnergyStored(energy);
}
@ -112,13 +112,13 @@ public abstract class ItemEnergy extends ItemBase {
@Deprecated
public int receiveEnergyInternal(ItemStack stack, int maxReceive, boolean simulate) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null))
.map(cap -> ((CustomEnergyStorage) cap).receiveEnergyInternal(maxReceive, simulate))
.orElse(0);
}
public int extractEnergyInternal(ItemStack stack, int maxExtract, boolean simulate) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null))
.map(cap -> cap instanceof CustomEnergyStorage
? ((CustomEnergyStorage) cap).extractEnergyInternal(maxExtract, simulate)
: 0)
@ -127,30 +127,32 @@ public abstract class ItemEnergy extends ItemBase {
@Deprecated
public int receiveEnergy(ItemStack stack, int maxReceive, boolean simulate) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null))
.map(cap -> cap.receiveEnergy(maxReceive, simulate))
.orElse(0);
}
public int extractEnergy(ItemStack stack, int maxExtract, boolean simulate) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null))
.map(cap -> cap.extractEnergy(maxExtract, simulate))
.orElse(0);
}
public int getEnergyStored(ItemStack stack) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null))
.map(IEnergyStorage::getEnergyStored)
.orElse(0);
}
public int getMaxEnergyStored(ItemStack stack) {
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM))
return Optional.ofNullable(stack.getCapability(Capabilities.EnergyStorage.ITEM, null))
.map(IEnergyStorage::getMaxEnergyStored)
.orElse(0);
}
public IEnergyStorage getEnergyStorage(ItemStack stack) {
if (!stack.hasData(ActuallyAttachments.ENERGY_STORAGE))
stack.setData(ActuallyAttachments.ENERGY_STORAGE, new CustomEnergyStorage(this.maxPower, this.transfer, this.transfer));
return stack.getData(ActuallyAttachments.ENERGY_STORAGE);
}

View file

@ -61,5 +61,7 @@ public enum TheFoods {
SPAGHETTI.returnItem = new ItemStack(Items.BOWL);
PUMPKIN_STEW.returnItem = new ItemStack(Items.BOWL);
CARROT_JUICE.returnItem = new ItemStack(Items.GLASS_BOTTLE);
FRENCH_FRIES.returnItem = new ItemStack(ActuallyItems.PAPER_CONE.get());
FISH_N_CHIPS.returnItem = new ItemStack(ActuallyItems.PAPER_CONE.get());
}
}

View file

@ -20,6 +20,8 @@ public class YummyItem extends ActuallyItem {
CHEESE(new FoodProperties.Builder().nutrition(1).saturationMod(0.05F), 3),
PUMPKIN_STEW(new FoodProperties.Builder().nutrition(6).saturationMod(0.3F), 30, true, new ItemStack(Items.BOWL)),
CARROT_JUICE(new FoodProperties.Builder().nutrition(4).saturationMod(0.2F), 20, true, new ItemStack(Items.GLASS_BOTTLE)),
FISH_N_CHIPS(new FoodProperties.Builder().nutrition(14).saturationMod(0.65F), 40, new ItemStack(ActuallyItems.PAPER_CONE.get())),
FRENCH_FRIES(new FoodProperties.Builder().nutrition(10).saturationMod(0.6F), 32, new ItemStack(ActuallyItems.PAPER_CONE.get())),
FRENCH_FRY(new FoodProperties.Builder().nutrition(2).saturationMod(0.025F), 3),
SPAGHETTI(new FoodProperties.Builder().nutrition(7).saturationMod(0.4F), 38, new ItemStack(Items.BOWL)),
NOODLE(new FoodProperties.Builder().nutrition(1).saturationMod(0.01F), 3),

View file

@ -1,28 +1,28 @@
modLoader="javafml"
loaderVersion="[${loader},)"
loaderVersion="[2,)"
license="MIT"
[[mods]]
modId="actuallyadditions"
version="${version}"
version="${file.jarVersion}"
displayName="Actually Additions"
#logoFile="logo.png"
credits="Author: Ellpeck; Textures and Models: BootyToast, GlenthorLP, canitzp; Porters: Flanks, MrBysco, ErrorMikey; 1.20+ Textures: Ridanisaurus"
credits="Author: Ellpeck; Textures and Models: BootyToast, GlenthorLP, canitzp"
authors="Ellpeck"
description='''
Do you want Automation? Wireless Transport? Better Machines? A cup o\' Coffee? Chests? Better Hoppers? Leaf Blowers? Faster Growth? Plants? Well, Actually Additions has all that and a lot more!
Do you want Automation? Wireless Transport? Better Machines? A cup o' Coffee? Chests? Better Hoppers? Leaf Blowers? Faster Growth? Plants? Well, Actually Additions has all that and a lot more!
'''
[[dependencies.actuallyadditions]]
modId="neoforge"
type="required"
versionRange="${neo_version_range}"
versionRange="[20.4.167,)"
ordering="NONE"
side="BOTH"
[[dependencies.actuallyadditions]]
modId="minecraft"
type="required"
versionRange="${minecraft_version_range}"
versionRange="[1.20.4,1.21)"
ordering="NONE"
side="BOTH"

View file

@ -279,8 +279,8 @@
"item.actuallyadditions.rice_dough": "Rice Dough (wip)",
"item.actuallyadditions.food_rice_bread": "Rice Bread (wip)",
"item.actuallyadditions.rice_seeds": "Rice Seeds",
"item.actuallyadditions.tiny_coal": "Tiny Coal",
"item.actuallyadditions.tiny_charcoal": "Tiny Charcoal",
"item.actuallyadditions.tiny_coal": "Tiny Coal (wip)",
"item.actuallyadditions.tiny_charcoal": "Tiny Charcoal (wip)",
"item.actuallyadditions.rice_slimeball": "Rice Slimeball (wip)",
"item.actuallyadditions.single_battery": "Single Battery",
"item.actuallyadditions.double_battery": "Double Battery",
@ -377,12 +377,12 @@
"item.actuallyadditions.spawner_shard": "Spawner Shards (wip)",
"item.actuallyadditions.minecart_firework_box": "Firework Box Cart (wip)",
"item.actuallyadditions.water_bowl": "Bowl of Water (wip)",
"item.actuallyadditions.filter": "Item Filter",
"item.actuallyadditions.filter": "Item Filter (wip)",
"item.actuallyadditions.biomass": "Biomass (wip)",
"item.actuallyadditions.biocoal": "Bio Coal (wip)",
"item.actuallyadditions.player_probe": "Player Probe (wip)",
"item.actuallyadditions.worm": "Worm",
"item.actuallyadditions.travelers_sack": "Traveler's Sack",
"item.actuallyadditions.travelers_sack": "Traveler's Sack (wip)",
"item.actuallyadditions.bag.storage": "filled slots (wip)",
"item.actuallyadditions.void_sack": "Void Sack (wip)",
"item.actuallyadditions.crystallized_canola_seed": "Crystallized Canola Seed",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -0,0 +1,19 @@
[
{
"modid": "actuallyadditions",
"name": "Actually Additions",
"description": "Do you want Automation? Wireless Transport? Better Machines? A cup o' Coffee? Chests? Better Hoppers? Leaf Blowers? Faster Growth? Plants? Well, Actually Additions has all that and a lot more!",
"version": "${version}",
"mcversion": "${mcversion}",
"url": "http://github.com/Ellpeck/ActuallyAdditions",
"updateUrl": "",
"authorList": [ "Ellpeck" ],
"credits": "Author: Ellpeck; Textures and Models: BootyToast, GlenthorLP, canitzp",
"logoFile": "assets/actuallyadditions/textures/logo.png",
"screenshots": [
],
"parent":"",
"dependencies": [
]
}
]

View file

@ -3,6 +3,6 @@
"description": {
"text": "actuallyadditions resources"
},
"pack_format": 26
"pack_format": 22
}
}