Re-enabled custom dispenser behavior and added a convenience registration function for it.
This commit is contained in:
parent
d831d1302f
commit
d65263f319
|
@ -2,8 +2,10 @@ package appeng.bootstrap;
|
|||
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.dispenser.IBehaviorDispenseItem;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
import appeng.core.features.AEFeature;
|
||||
|
@ -31,5 +33,10 @@ public interface IItemBuilder
|
|||
|
||||
IItemBuilder rendering( ItemRenderingCustomizer callback );
|
||||
|
||||
/**
|
||||
* Registers a custom dispenser behavior for this item.
|
||||
*/
|
||||
IItemBuilder dispenserBehavior( Supplier<IBehaviorDispenseItem> behavior );
|
||||
|
||||
ItemDefinition build();
|
||||
}
|
||||
|
|
|
@ -8,7 +8,9 @@ import java.util.List;
|
|||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import net.minecraft.block.BlockDispenser;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.dispenser.IBehaviorDispenseItem;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
|
@ -39,6 +41,8 @@ class ItemDefinitionBuilder implements IItemBuilder
|
|||
|
||||
private final List<Consumer<Item>> postInitCallbacks = new ArrayList<>();
|
||||
|
||||
private Supplier<IBehaviorDispenseItem> dispenserBehaviorSupplier;
|
||||
|
||||
@SideOnly( Side.CLIENT )
|
||||
private ItemRendering itemRendering;
|
||||
|
||||
|
@ -109,6 +113,13 @@ class ItemDefinitionBuilder implements IItemBuilder
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemBuilder dispenserBehavior( Supplier<IBehaviorDispenseItem> behavior )
|
||||
{
|
||||
this.dispenserBehaviorSupplier = behavior;
|
||||
return this;
|
||||
}
|
||||
|
||||
@SideOnly( Side.CLIENT )
|
||||
private void customizeForClient( ItemRenderingCustomizer callback )
|
||||
{
|
||||
|
@ -135,6 +146,16 @@ class ItemDefinitionBuilder implements IItemBuilder
|
|||
initCallbacks.forEach( consumer -> factory.addInit( side -> consumer.accept( item ) ) );
|
||||
postInitCallbacks.forEach( consumer -> factory.addPostInit( side -> consumer.accept( item ) ) );
|
||||
|
||||
// Register custom dispenser behavior if requested
|
||||
if( dispenserBehaviorSupplier != null )
|
||||
{
|
||||
factory.addPostInit( side ->
|
||||
{
|
||||
IBehaviorDispenseItem behavior = dispenserBehaviorSupplier.get();
|
||||
BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject( item, behavior );
|
||||
} );
|
||||
}
|
||||
|
||||
factory.addPreInit( side -> GameRegistry.register( item ) );
|
||||
|
||||
if( Platform.isClient() )
|
||||
|
|
|
@ -29,6 +29,8 @@ import appeng.debug.ToolDebugCard;
|
|||
import appeng.debug.ToolEraser;
|
||||
import appeng.debug.ToolMeteoritePlacer;
|
||||
import appeng.debug.ToolReplicatorCard;
|
||||
import appeng.hooks.DispenserBlockTool;
|
||||
import appeng.hooks.DispenserMatterCannon;
|
||||
import appeng.items.materials.MaterialType;
|
||||
import appeng.items.misc.ItemCrystalSeed;
|
||||
import appeng.items.misc.ItemCrystalSeedRendering;
|
||||
|
@ -138,12 +140,21 @@ public final class ApiItems implements IItems
|
|||
this.netherQuartzKnife = netherTools.item( "nether_quartz_cutting_knife", () -> new ToolQuartzCuttingKnife( AEFeature.NetherQuartzTools ) ).addFeatures( AEFeature.QuartzKnife ).build();
|
||||
|
||||
FeatureFactory powerTools = registry.features( AEFeature.PoweredTools );
|
||||
this.entropyManipulator = powerTools.item( "entropy_manipulator", ToolEntropyManipulator::new ).addFeatures( AEFeature.EntropyManipulator ).build();
|
||||
this.entropyManipulator = powerTools.item( "entropy_manipulator", ToolEntropyManipulator::new )
|
||||
.addFeatures( AEFeature.EntropyManipulator )
|
||||
.dispenserBehavior( DispenserBlockTool::new )
|
||||
.build();
|
||||
this.wirelessTerminal = powerTools.item( "wireless_terminal", ToolWirelessTerminal::new ).addFeatures( AEFeature.WirelessAccessTerminal ).build();
|
||||
this.chargedStaff = powerTools.item( "charged_staff", ToolChargedStaff::new ).addFeatures( AEFeature.ChargedStaff ).build();
|
||||
this.massCannon = powerTools.item( "mass_cannon", ToolMassCannon::new ).addFeatures( AEFeature.MatterCannon ).build();
|
||||
this.massCannon = powerTools.item( "mass_cannon", ToolMassCannon::new )
|
||||
.addFeatures( AEFeature.MatterCannon )
|
||||
.dispenserBehavior( DispenserMatterCannon::new )
|
||||
.build();
|
||||
this.portableCell = powerTools.item( "portable_cell", ToolPortableCell::new ).addFeatures( AEFeature.PortableCell, AEFeature.StorageCells ).build();
|
||||
this.colorApplicator = powerTools.item( "color_applicator", ToolColorApplicator::new ).addFeatures( AEFeature.ColorApplicator ).build();
|
||||
this.colorApplicator = powerTools.item( "color_applicator", ToolColorApplicator::new )
|
||||
.addFeatures( AEFeature.ColorApplicator )
|
||||
.dispenserBehavior( DispenserBlockTool::new )
|
||||
.build();
|
||||
|
||||
this.biometricCard = registry.item( "biometric_card", ToolBiometricCard::new ).features( AEFeature.Security ).build();
|
||||
this.memoryCard = registry.item( "memory_card", ToolMemoryCard::new ).build();
|
||||
|
|
|
@ -29,7 +29,6 @@ import java.util.Set;
|
|||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockColored;
|
||||
import net.minecraft.block.BlockDispenser;
|
||||
import net.minecraft.block.BlockStainedGlass;
|
||||
import net.minecraft.block.BlockStainedGlassPane;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
|
@ -66,7 +65,6 @@ import appeng.block.networking.BlockCableBus;
|
|||
import appeng.core.AEConfig;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.helpers.IMouseWheelItem;
|
||||
import appeng.hooks.DispenserBlockTool;
|
||||
import appeng.hooks.IBlockTool;
|
||||
import appeng.items.contents.CellConfig;
|
||||
import appeng.items.contents.CellUpgrades;
|
||||
|
@ -108,12 +106,6 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe
|
|||
}
|
||||
}
|
||||
|
||||
public void postInit()
|
||||
{
|
||||
// TODO BOOTSTRAP
|
||||
BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject( this, new DispenserBlockTool() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse( final ItemStack is, final EntityPlayer p, final World w, final BlockPos pos, final EnumFacing side, final float hitX, final float hitY, final float hitZ )
|
||||
{
|
||||
|
|
|
@ -25,7 +25,6 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockDispenser;
|
||||
import net.minecraft.block.BlockTNT;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
|
@ -49,7 +48,6 @@ import net.minecraft.world.World;
|
|||
import appeng.api.util.DimensionalCoord;
|
||||
import appeng.block.misc.BlockTinyTNT;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.hooks.DispenserBlockTool;
|
||||
import appeng.hooks.IBlockTool;
|
||||
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
|
||||
import appeng.util.InWorldToolOperationResult;
|
||||
|
@ -85,12 +83,6 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT
|
|||
this.heatUp.put( new InWorldToolOperationIngredient( Blocks.SNOW, true ), new InWorldToolOperationResult( new ItemStack( Blocks.FLOWING_WATER ) ) );
|
||||
}
|
||||
|
||||
public void postInit()
|
||||
{
|
||||
// TODO BOOTSTRAP
|
||||
BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject( this, new DispenserBlockTool() );
|
||||
}
|
||||
|
||||
private static class InWorldToolOperationIngredient
|
||||
{
|
||||
private final IBlockState state;
|
||||
|
|
|
@ -23,7 +23,6 @@ import java.util.List;
|
|||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockDispenser;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
|
@ -67,7 +66,6 @@ import appeng.core.localization.GuiText;
|
|||
import appeng.core.localization.PlayerMessages;
|
||||
import appeng.core.sync.network.NetworkHandler;
|
||||
import appeng.core.sync.packets.PacketMatterCannon;
|
||||
import appeng.hooks.DispenserMatterCannon;
|
||||
import appeng.hooks.TickHandler;
|
||||
import appeng.hooks.TickHandler.PlayerColor;
|
||||
import appeng.items.contents.CellConfig;
|
||||
|
@ -88,12 +86,6 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell
|
|||
super( AEConfig.instance.matterCannonBattery );
|
||||
}
|
||||
|
||||
public void postInit()
|
||||
{
|
||||
// TODO BOOTSTRAP
|
||||
BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.putObject( this, new DispenserMatterCannon() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCheckedInformation( final ItemStack stack, final EntityPlayer player, final List<String> lines, final boolean displayMoreInfo )
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue