From d831d1302fa6c47d7de5bf806daadc3d43fe9d03 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Fri, 26 Aug 2016 00:21:26 +0200 Subject: [PATCH] Added missing custom preInit/init/postInit functionality to the IItemBuilder. --- .../java/appeng/bootstrap/IItemBuilder.java | 11 ++++-- .../bootstrap/ItemDefinitionBuilder.java | 35 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/appeng/bootstrap/IItemBuilder.java b/src/main/java/appeng/bootstrap/IItemBuilder.java index e46b3769..7dfb730d 100644 --- a/src/main/java/appeng/bootstrap/IItemBuilder.java +++ b/src/main/java/appeng/bootstrap/IItemBuilder.java @@ -1,11 +1,13 @@ package appeng.bootstrap; +import java.util.function.Consumer; + import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; import appeng.core.features.AEFeature; import appeng.core.features.ItemDefinition; -import appeng.util.Platform; /** @@ -15,6 +17,12 @@ import appeng.util.Platform; public interface IItemBuilder { + IItemBuilder preInit( Consumer callback ); + + IItemBuilder init( Consumer callback ); + + IItemBuilder postInit( Consumer callback ); + IItemBuilder features( AEFeature... features ); IItemBuilder addFeatures( AEFeature... features ); @@ -24,5 +32,4 @@ public interface IItemBuilder IItemBuilder rendering( ItemRenderingCustomizer callback ); ItemDefinition build(); - } diff --git a/src/main/java/appeng/bootstrap/ItemDefinitionBuilder.java b/src/main/java/appeng/bootstrap/ItemDefinitionBuilder.java index fb930654..ca36d473 100644 --- a/src/main/java/appeng/bootstrap/ItemDefinitionBuilder.java +++ b/src/main/java/appeng/bootstrap/ItemDefinitionBuilder.java @@ -1,8 +1,11 @@ package appeng.bootstrap; +import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; +import java.util.List; +import java.util.function.Consumer; import java.util.function.Supplier; import net.minecraft.creativetab.CreativeTabs; @@ -30,6 +33,12 @@ class ItemDefinitionBuilder implements IItemBuilder private final EnumSet features = EnumSet.noneOf( AEFeature.class ); + private final List> preInitCallbacks = new ArrayList<>(); + + private final List> initCallbacks = new ArrayList<>(); + + private final List> postInitCallbacks = new ArrayList<>(); + @SideOnly( Side.CLIENT ) private ItemRendering itemRendering; @@ -46,6 +55,27 @@ class ItemDefinitionBuilder implements IItemBuilder } } + @Override + public ItemDefinitionBuilder preInit( Consumer callback ) + { + preInitCallbacks.add( callback ); + return this; + } + + @Override + public ItemDefinitionBuilder init( Consumer callback ) + { + initCallbacks.add( callback ); + return this; + } + + @Override + public ItemDefinitionBuilder postInit( Consumer callback ) + { + postInitCallbacks.add( callback ); + return this; + } + @Override public IItemBuilder features( AEFeature... features ) { @@ -100,6 +130,11 @@ class ItemDefinitionBuilder implements IItemBuilder item.setUnlocalizedName( "appliedenergistics2." + registryName ); item.setCreativeTab( creativeTab ); + // Register all extra handlers + preInitCallbacks.forEach( consumer -> factory.addPreInit( side -> consumer.accept( item ) ) ); + initCallbacks.forEach( consumer -> factory.addInit( side -> consumer.accept( item ) ) ); + postInitCallbacks.forEach( consumer -> factory.addPostInit( side -> consumer.accept( item ) ) ); + factory.addPreInit( side -> GameRegistry.register( item ) ); if( Platform.isClient() )