Skip to content

Commit

Permalink
Fix #2.
Browse files Browse the repository at this point in the history
Rewrite all registration methods, now the project no longer relies on Registrate and PortingLib.
  • Loading branch information
LittleCircleOO committed Aug 19, 2024
1 parent 34f6f50 commit 50955c8
Show file tree
Hide file tree
Showing 10 changed files with 142 additions and 327 deletions.
11 changes: 0 additions & 11 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ repositories {
}
}

// Registrate Refabricated is hosted on this maven.
maven { url = "https://mvn.devos.one/snapshots/" }

// Porting Lib
maven { url = "https://mvn.devos.one/releases/" }

}

fabricApi {
Expand All @@ -48,18 +42,13 @@ dependencies {
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"

// depend on and include Registrate.
modImplementation(include("com.tterrag.registrate_fabric:Registrate:${project.registrate_version}"))

//AE2
modImplementation "appeng:appliedenergistics2-fabric:15.2.12"

//lombok
compileOnly 'org.projectlombok:lombok:1.18.34'
annotationProcessor 'org.projectlombok:lombok:1.18.34'

//Porting Lib
modImplementation(include("io.github.fabricators_of_create.Porting-Lib:models:2.3.4+1.20.1"))
}

processResources {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ minecraft_version=1.20.1
loader_version=0.15.11

# Mod Properties
mod_version = 0.1.2
mod_version = 0.2.0-Fabric-1.20.1
maven_group=cn.dancingsnow.bigger_ae2
archives_base_name=bigger_ae2

Expand Down
19 changes: 13 additions & 6 deletions src/main/java/cn/dancingsnow/bigger_ae2/BiggerAE2Mod.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import cn.dancingsnow.bigger_ae2.item.cell.DigitalSingularityCellItem;
import com.mojang.logging.LogUtils;

import com.tterrag.registrate.Registrate;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
Expand All @@ -23,17 +22,25 @@ public class BiggerAE2Mod {
public static final String MOD_ID = "bigger_ae2";
public static final Logger LOGGER = LogUtils.getLogger();

public static final Registrate REGISTRATE = Registrate.create(MOD_ID);

public static ResourceLocation makeId(String path) {
return new ResourceLocation(MOD_ID, path);
}

public static void init() {

ModCreativeTab.register();
ModItems.register();
ModBlocks.register();
//Block
for (var block : ModBlocks.getBlocks()) {
Registry.register(BuiltInRegistries.BLOCK, block.id(), block.block());
Registry.register(BuiltInRegistries.ITEM, block.id(), block.asItem());
}

//Item
for (var item : ModItems.getItems()) {
Registry.register(BuiltInRegistries.ITEM, item.id(), item.asItem());
}

//CreativeTab
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, makeId("tab"), ModCreativeTab.TAB);

//BlockEntity
for (var blockEntity : ModBlockEntities.getBlockEntityTypes().entrySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,5 @@ public class BiggerAE2Server extends BiggerAE2Base implements IAEAddonEntrypoint
@Override
public void onAe2Initialized() {
super.init();
BiggerAE2Mod.REGISTRATE.register();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import appeng.block.crafting.CraftingUnitBlock;
import appeng.block.crafting.ICraftingUnitType;
import appeng.core.definitions.BlockDefinition;
import cn.dancingsnow.bigger_ae2.init.ModBlocks;
import com.tterrag.registrate.util.entry.BlockEntry;
import lombok.Getter;
import net.minecraft.world.item.Item;

Expand Down Expand Up @@ -44,7 +44,7 @@ public Item getItemFromType() {
};
}

public BlockEntry<CraftingUnitBlock> getBlockFromType() {
public BlockDefinition<CraftingUnitBlock> getBlockFromType() {
return switch (this) {
case ACCELERATOR_4 -> ModBlocks.ACCELERATOR_4;
case ACCELERATOR_16 -> ModBlocks.ACCELERATOR_16;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ public class BiggerAE2Client extends BiggerAE2Base implements IAEAddonEntrypoint
public void onAe2Initialized() {
super.init();
initCraftingUnitModels();
BiggerAE2Mod.REGISTRATE.register();
}

private static void initCraftingUnitModels() {
Expand Down Expand Up @@ -47,10 +46,10 @@ public void onInitializeModelLoader(Context pluginContext) {
}

private static void setRenderLayer() {
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_4.get(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_16.get(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_64.get(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_256.get(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_1024.get(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_4.block(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_16.block(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_64.block(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_256.block(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.ACCELERATOR_1024.block(), RenderType.cutout());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import appeng.blockentity.crafting.CraftingBlockEntity;
import appeng.core.definitions.BlockDefinition;
import cn.dancingsnow.bigger_ae2.BiggerAE2Mod;
import cn.dancingsnow.bigger_ae2.block.ModCraftingUnitType;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.core.BlockPos;
Expand All @@ -17,8 +16,6 @@
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicReference;

import static cn.dancingsnow.bigger_ae2.BiggerAE2Mod.REGISTRATE;

public class ModBlockEntities {

private static final Map<ResourceLocation, BlockEntityType<?>> BLOCK_ENTITY_TYPES = new HashMap<>();
Expand Down
205 changes: 51 additions & 154 deletions src/main/java/cn/dancingsnow/bigger_ae2/init/ModBlocks.java
Original file line number Diff line number Diff line change
@@ -1,172 +1,69 @@
package cn.dancingsnow.bigger_ae2.init;

import appeng.block.crafting.AbstractCraftingUnitBlock;
import appeng.block.crafting.CraftingUnitBlock;
import appeng.core.definitions.AEBlocks;
import appeng.core.definitions.BlockDefinition;
import appeng.block.AEBaseBlockItem;
import cn.dancingsnow.bigger_ae2.BiggerAE2Mod;
import cn.dancingsnow.bigger_ae2.block.ModCraftingUnitType;
import com.tterrag.registrate.providers.RegistrateRecipeProvider;
import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.world.item.BlockItem;
import io.github.fabricators_of_create.porting_lib.models.generators.ConfiguredModel;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;

import static cn.dancingsnow.bigger_ae2.BiggerAE2Mod.REGISTRATE;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Supplier;

public class ModBlocks {

public static final BlockEntry<CraftingUnitBlock> ACCELERATOR_4 = REGISTRATE
.block("4_core_crafting_accelerator", p -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_4))
.blockstate((ctx, provider) -> {
String formed = "block/crafting/" + ctx.getName() + "_formed";
String unformed = "block/crafting/" + ctx.getName();
provider.models().cubeAll(unformed, provider.modLoc("block/crafting/" + ctx.getName()));
provider.models().getBuilder(formed);
provider.getVariantBuilder(ctx.get())
.forAllStatesExcept(state -> {
boolean b = state.getValue(AbstractCraftingUnitBlock.FORMED);
//FIXME: Model loader 'bigger_ae2:block/crafting/4_core_crafting_accelerator_formed' not found.
// Registered loaders: porting_lib:elements, porting_lib:composite, porting_lib:fluid_container, forge:bucket
return ConfiguredModel.builder()
.modelFile(provider.models().getExistingFile(provider.modLoc(b ? formed : unformed)))
.build();
}, AbstractCraftingUnitBlock.POWERED);
})
.recipe((ctx, provider) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ctx.get())
.requires(AEBlocks.CRAFTING_ACCELERATOR)
.requires(AEBlocks.CRAFTING_ACCELERATOR)
.requires(AEBlocks.CRAFTING_ACCELERATOR)
.requires(AEBlocks.CRAFTING_ACCELERATOR)
.unlockedBy("has_item", RegistrateRecipeProvider.has(AEBlocks.CRAFTING_ACCELERATOR))
.save(provider))
.defaultLoot()
.item(BlockItem::new)
.model((ctx, provider) -> provider.withExistingParent(ctx.getName(), provider.modLoc("block/crafting/" + ctx.getName())))
.build()
.register();
private static final List<BlockDefinition<?>> BLOCKS = new ArrayList<>();

public static final BlockEntry<CraftingUnitBlock> ACCELERATOR_16 = REGISTRATE
.block("16_core_crafting_accelerator", p -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_16))
.blockstate((ctx, provider) -> {
String formed = "block/crafting/" + ctx.getName() + "_formed";
String unformed = "block/crafting/" + ctx.getName();
provider.models().cubeAll(unformed, provider.modLoc("block/crafting/" + ctx.getName()));
provider.models().getBuilder(formed);
provider.getVariantBuilder(ctx.get())
.forAllStatesExcept(state -> {
boolean b = state.getValue(AbstractCraftingUnitBlock.FORMED);
//FIXME: Model loader 'bigger_ae2:block/crafting/16_core_crafting_accelerator_formed' not found.
// Registered loaders: porting_lib:elements, porting_lib:composite, porting_lib:fluid_container, forge:bucket
return ConfiguredModel.builder()
.modelFile(provider.models().getExistingFile(provider.modLoc(b ? formed : unformed)))
.build();
}, AbstractCraftingUnitBlock.POWERED);
})
.recipe((ctx, provider) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ctx.get())
.requires(ACCELERATOR_4)
.requires(ACCELERATOR_4)
.requires(ACCELERATOR_4)
.requires(ACCELERATOR_4)
.unlockedBy("has_item", RegistrateRecipeProvider.has(ACCELERATOR_4))
.save(provider))
.defaultLoot()
.item(BlockItem::new)
.model((ctx, provider) -> provider.withExistingParent(ctx.getName(), provider.modLoc("block/crafting/" + ctx.getName())))
.build()
.register();
public static List<BlockDefinition<?>> getBlocks() {
return Collections.unmodifiableList(BLOCKS);
}

public static final BlockDefinition<CraftingUnitBlock> ACCELERATOR_4 = block(
"4 Core Crafting Accelerator",
"4_core_crafting_accelerator",
() -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_4),
AEBaseBlockItem::new);

public static final BlockDefinition<CraftingUnitBlock> ACCELERATOR_16 = block(
"16 Core Crafting Accelerator",
"16_core_crafting_accelerator",
() -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_16),
AEBaseBlockItem::new);

public static final BlockEntry<CraftingUnitBlock> ACCELERATOR_64 = REGISTRATE
.block("64_core_crafting_accelerator", p -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_64))
.blockstate((ctx, provider) -> {
String formed = "block/crafting/" + ctx.getName() + "_formed";
String unformed = "block/crafting/" + ctx.getName();
provider.models().cubeAll(unformed, provider.modLoc("block/crafting/" + ctx.getName()));
provider.models().getBuilder(formed);
provider.getVariantBuilder(ctx.get())
.forAllStatesExcept(state -> {
boolean b = state.getValue(AbstractCraftingUnitBlock.FORMED);
//FIXME: Model loader 'bigger_ae2:block/crafting/64_core_crafting_accelerator_formed' not found.
// Registered loaders: porting_lib:elements, porting_lib:composite, porting_lib:fluid_container, forge:bucket
return ConfiguredModel.builder()
.modelFile(provider.models().getExistingFile(provider.modLoc(b ? formed : unformed)))
.build();
}, AbstractCraftingUnitBlock.POWERED);
})
.recipe((ctx, provider) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ctx.get())
.requires(ACCELERATOR_16)
.requires(ACCELERATOR_16)
.requires(ACCELERATOR_16)
.requires(ACCELERATOR_16)
.unlockedBy("has_item", RegistrateRecipeProvider.has(ACCELERATOR_16))
.save(provider))
.defaultLoot()
.item(BlockItem::new)
.model((ctx, provider) -> provider.withExistingParent(ctx.getName(), provider.modLoc("block/crafting/" + ctx.getName())))
.build()
.register();
public static final BlockDefinition<CraftingUnitBlock> ACCELERATOR_64 = block(
"64 Core Crafting Accelerator",
"64_core_crafting_accelerator",
() -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_64),
AEBaseBlockItem::new);

public static final BlockEntry<CraftingUnitBlock> ACCELERATOR_256 = REGISTRATE
.block("256_core_crafting_accelerator", p -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_256))
.blockstate((ctx, provider) -> {
String formed = "block/crafting/" + ctx.getName() + "_formed";
String unformed = "block/crafting/" + ctx.getName();
provider.models().cubeAll(unformed, provider.modLoc("block/crafting/" + ctx.getName()));
provider.models().getBuilder(formed);
provider.getVariantBuilder(ctx.get())
.forAllStatesExcept(state -> {
boolean b = state.getValue(AbstractCraftingUnitBlock.FORMED);
//FIXME: Model loader 'bigger_ae2:block/crafting/256_core_crafting_accelerator_formed' not found.
// Registered loaders: porting_lib:elements, porting_lib:composite, porting_lib:fluid_container, forge:bucket
return ConfiguredModel.builder()
.modelFile(provider.models().getExistingFile(provider.modLoc(b ? formed : unformed)))
.build();
}, AbstractCraftingUnitBlock.POWERED);
})
.recipe((ctx, provider) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ctx.get())
.requires(ACCELERATOR_64)
.requires(ACCELERATOR_64)
.requires(ACCELERATOR_64)
.requires(ACCELERATOR_64)
.unlockedBy("has_item", RegistrateRecipeProvider.has(ACCELERATOR_64))
.save(provider))
.defaultLoot()
.item(BlockItem::new)
.model((ctx, provider) -> provider.withExistingParent(ctx.getName(), provider.modLoc("block/crafting/" + ctx.getName())))
.build()
.register();
public static final BlockDefinition<CraftingUnitBlock> ACCELERATOR_256 = block(
"256 Core Crafting Accelerator",
"256_core_crafting_accelerator",
() -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_256),
AEBaseBlockItem::new);

public static final BlockEntry<CraftingUnitBlock> ACCELERATOR_1024 = REGISTRATE
.block("1024_core_crafting_accelerator", p -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_1024))
.blockstate((ctx, provider) -> {
String formed = "block/crafting/" + ctx.getName() + "_formed";
String unformed = "block/crafting/" + ctx.getName();
provider.models().cubeAll(unformed, provider.modLoc("block/crafting/" + ctx.getName()));
provider.models().getBuilder(formed);
provider.getVariantBuilder(ctx.get())
.forAllStatesExcept(state -> {
boolean b = state.getValue(AbstractCraftingUnitBlock.FORMED);
//FIXME: Model loader 'bigger_ae2:block/crafting/1024_core_crafting_accelerator_formed' not found.
// Registered loaders: porting_lib:elements, porting_lib:composite, porting_lib:fluid_container, forge:bucket
return ConfiguredModel.builder()
.modelFile(provider.models().getExistingFile(provider.modLoc(b ? formed : unformed)))
.build();
}, AbstractCraftingUnitBlock.POWERED);
})
.recipe((ctx, provider) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ctx.get())
.requires(ACCELERATOR_256)
.requires(ACCELERATOR_256)
.requires(ACCELERATOR_256)
.requires(ACCELERATOR_256)
.unlockedBy("has_item", RegistrateRecipeProvider.has(ACCELERATOR_256))
.save(provider))
.defaultLoot()
.item(BlockItem::new)
.model((ctx, provider) -> provider.withExistingParent(ctx.getName(), provider.modLoc("block/crafting/" + ctx.getName())))
.build()
.register();
public static final BlockDefinition<CraftingUnitBlock> ACCELERATOR_1024 = block(
"1024 Core Crafting Accelerator",
"1024_core_crafting_accelerator",
() -> new CraftingUnitBlock(ModCraftingUnitType.ACCELERATOR_1024),
AEBaseBlockItem::new);

public static void register() {
public static <T extends Block> BlockDefinition<T> block(
String englishName,
String id,
Supplier<T> blockSupplier,
BiFunction<Block, Item.Properties, BlockItem> itemFactory) {
var block = blockSupplier.get();
var item = itemFactory.apply(block, new Item.Properties());

var definition = new BlockDefinition<>(englishName, BiggerAE2Mod.makeId(id), block, item);
BLOCKS.add(definition);
return definition;
}

}
Loading

0 comments on commit 50955c8

Please sign in to comment.