Big clean up, more details in the PR (#216)

* Big clean up, more details in the PR

* Fix build

* Deprecate BlockProperties, generate AWs for Item constructors, Block constructors and RenderStateShard fields

* Add a few more RenderType AWs

* Deprecate BlockPropertiesExtension

* Set defaultType on resolving the entity type in SpawnEggItem

* Used the wrong object

* Add license information for generating AWs

* Add link to original PR

* Properly add support for forge vanilla registries

* Bump to 4.1
This commit is contained in:
shedaniel
2022-03-12 00:01:49 +08:00
committed by GitHub
parent 5f63bbafea
commit 36a5aea8aa
48 changed files with 1126 additions and 611 deletions

View File

@@ -38,8 +38,7 @@ import dev.architectury.utils.Env;
import dev.architectury.utils.EnvExecutor;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.entity.MinecartRenderer;
import net.minecraft.client.renderer.entity.PigRenderer;
public class TestMod {
public static final MessageSink SINK = EnvExecutor.getEnvSpecific(() -> ClientOverlayMessageSink::new, () -> ConsoleMessageSink::new);
@@ -65,8 +64,7 @@ public class TestMod {
ClientLifecycleEvent.CLIENT_STOPPING.register((client) -> SINK.accept("Client stopping!"));
TestKeybinds.initialize();
TestModNet.initializeClient();
EntityRendererRegistry.register(() -> TestEntity.TYPE, context ->
new MinecartRenderer<>(context, ModelLayers.MINECART));
EntityRendererRegistry.register(() -> TestEntity.TYPE, PigRenderer::new);
}
}
}

View File

@@ -23,21 +23,16 @@ import dev.architectury.networking.NetworkManager;
import net.minecraft.network.protocol.Packet;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.minecraft.world.entity.vehicle.AbstractMinecart;
import net.minecraft.world.entity.animal.Pig;
import net.minecraft.world.level.Level;
public class TestEntity extends AbstractMinecart {
public class TestEntity extends Pig {
public static final EntityType<TestEntity> TYPE = EntityType.Builder.of(TestEntity::new, MobCategory.MISC).sized(0.98F, 0.7F).clientTrackingRange(8).build("test_entity");
public TestEntity(EntityType<? extends AbstractMinecart> entityType, Level level) {
public TestEntity(EntityType<? extends Pig> entityType, Level level) {
super(entityType, level);
}
@Override
public Type getMinecartType() {
return Type.RIDEABLE;
}
@Override
public Packet<?> getAddEntityPacket() {
return NetworkManager.createAddEntityPacket(this);

View File

@@ -218,10 +218,10 @@ public class DebugEvents {
TestMod.SINK.accept(bolt.getScoreboardName() + " struck at " + toShortString(pos) + logSide(level));
});
ChunkEvent.LOAD_DATA.register((chunk, level, nbt) -> {
TestMod.SINK.accept("Chunk loaded at x=" + chunk.getPos().x + ", z=" + chunk.getPos().z + " in dimension '" + level.dimension().location() + "'");
// TestMod.SINK.accept("Chunk loaded at x=" + chunk.getPos().x + ", z=" + chunk.getPos().z + " in dimension '" + level.dimension().location() + "'");
});
ChunkEvent.SAVE_DATA.register((chunk, level, nbt) -> {
TestMod.SINK.accept("Chunk saved at x=" + chunk.getPos().x + ", z=" + chunk.getPos().z + " in dimension '" + level.dimension().location() + "'");
// TestMod.SINK.accept("Chunk saved at x=" + chunk.getPos().x + ", z=" + chunk.getPos().z + " in dimension '" + level.dimension().location() + "'");
});
}

View File

@@ -19,9 +19,11 @@
package dev.architectury.test.registry;
import dev.architectury.core.item.ArchitecturySpawnEggItem;
import dev.architectury.hooks.item.food.FoodPropertiesHooks;
import dev.architectury.hooks.level.entity.EntityHooks;
import dev.architectury.registry.block.BlockProperties;
import dev.architectury.registry.level.entity.EntityAttributeRegistry;
import dev.architectury.registry.registries.DeferredRegister;
import dev.architectury.registry.registries.RegistrySupplier;
import dev.architectury.test.TestMod;
@@ -35,11 +37,13 @@ import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectCategory;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.animal.Pig;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.crafting.CustomRecipe;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
@@ -55,6 +59,7 @@ public class TestRegistries {
public static final DeferredRegister<EntityType<?>> ENTITY_TYPES = DeferredRegister.create(TestMod.MOD_ID, Registry.ENTITY_TYPE_REGISTRY);
public static final DeferredRegister<MobEffect> MOB_EFFECTS = DeferredRegister.create(TestMod.MOD_ID, Registry.MOB_EFFECT_REGISTRY);
public static final DeferredRegister<RecipeSerializer<?>> RECIPE_SERIALIZERS = DeferredRegister.create(TestMod.MOD_ID, Registry.RECIPE_SERIALIZER_REGISTRY);
public static final DeferredRegister<RecipeType<?>> RECIPE_TYPES = DeferredRegister.create(TestMod.MOD_ID, Registry.RECIPE_TYPE_REGISTRY);
public static final RegistrySupplier<MobEffect> TEST_EFFECT = MOB_EFFECTS.register("test_effect", () ->
new MobEffect(MobEffectCategory.NEUTRAL, 0x123456) {
@@ -69,6 +74,9 @@ public class TestRegistries {
FoodPropertiesHooks.effect(fpBuilder, () -> new MobEffectInstance(TEST_EFFECT.get(), 100), 1);
return new Item(new Item.Properties().tab(TestCreativeTabs.TEST_TAB).food(fpBuilder.build()));
});
public static final RegistrySupplier<Item> TEST_SPAWN_EGG = ITEMS.register("test_spawn_egg", () ->
new ArchitecturySpawnEggItem(TestRegistries.TEST_ENTITY, 0xFF000000, 0xFFFFFFFF,
new Item.Properties().tab(TestCreativeTabs.TEST_TAB)));
public static final RegistrySupplier<Block> TEST_BLOCK = BLOCKS.register("test_block", () ->
new Block(BlockProperties.copy(Blocks.STONE)));
@@ -90,11 +98,29 @@ public class TestRegistries {
public static final RegistrySupplier<RecipeSerializer<CustomRecipe>> TEST_SERIALIZER = RECIPE_SERIALIZERS.register("test_serializer", TestRecipeSerializer::new);
public static final RegistrySupplier<RecipeType<CustomRecipe>> TEST_RECIPE_TYPE = RECIPE_TYPES.register("test_recipe_type", () -> new RecipeType<CustomRecipe>() {
@Override
public String toString() {
return TestMod.MOD_ID + ":test_recipe_type";
}
});
public static void initialize() {
MOB_EFFECTS.register();
BLOCKS.register();
ITEMS.register();
ENTITY_TYPES.register();
RECIPE_TYPES.register();
RECIPE_SERIALIZERS.register();
EntityAttributeRegistry.register(TEST_ENTITY, Pig::createAttributes);
TEST_BLOCK_ITEM.listen(item -> {
System.out.println("Registered item!");
});
TEST_SERIALIZER.listen(type -> {
System.out.println("Registered recipe serializer!");
});
TEST_RECIPE_TYPE.listen(type -> {
System.out.println("Registered recipe type!");
});
}
}