/
MechworksContent.java
161 lines (130 loc) · 7.13 KB
/
MechworksContent.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package slimeknights.tmechworks.common;
import net.minecraft.block.Block;
import net.minecraft.client.gui.ScreenManager;
import net.minecraft.inventory.container.ContainerType;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.extensions.IForgeContainerType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.ObjectHolder;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import slimeknights.mantle.client.CreativeTab;
import slimeknights.mantle.common.IRegisterUtil;
import slimeknights.tmechworks.TMechworks;
import slimeknights.tmechworks.client.gui.DisguiseScreen;
import slimeknights.tmechworks.client.gui.DrawbridgeScreen;
import slimeknights.tmechworks.common.blocks.DrawbridgeBlock;
import slimeknights.tmechworks.common.blocks.FirestarterBlock;
import slimeknights.tmechworks.common.blocks.MetalBlock;
import slimeknights.tmechworks.common.blocks.tileentity.DrawbridgeTileEntity;
import slimeknights.tmechworks.common.blocks.tileentity.FirestarterTileEntity;
import slimeknights.tmechworks.common.inventory.DisguiseContainer;
import slimeknights.tmechworks.common.inventory.DrawbridgeContainer;
import slimeknights.tmechworks.common.items.MachineUpgradeItem;
import slimeknights.tmechworks.common.items.MechworksBlockItem;
import slimeknights.tmechworks.common.items.MechworksBookItem;
import java.util.function.Supplier;
public class MechworksContent implements IRegisterUtil {
private Logger log = LogManager.getLogger(TMechworks.modId + ".content");
// Creative tabs
public static CreativeTab tabMechworks = new CreativeTab("TinkersMechworks", new ItemStack(net.minecraft.item.Items.LIME_BANNER));
@ObjectHolder(TMechworks.modId)
public static class Blocks {
public static final MetalBlock aluminum_block = null;
public static final MetalBlock copper_block = null;
public static final FirestarterBlock firestarter = null;
public static final DrawbridgeBlock drawbridge = null;
}
@ObjectHolder(TMechworks.modId)
public static class Items {
public static final MechworksBookItem book = null;
// Upgrades
public static final MachineUpgradeItem upgrade_drawbridge_advanced = null;
public static final MachineUpgradeItem upgrade_drawbridge_distance = null;
public static final MachineUpgradeItem upgrade_speed = null;
}
@ObjectHolder(TMechworks.modId)
public static class TileEntities {
public static final TileEntityType<?> firestarter = null;
public static final TileEntityType<?> drawbridge = null;
}
@ObjectHolder(TMechworks.modId)
public static class Containers {
public static final ContainerType<DisguiseContainer> disguise = null;
public static final ContainerType<DrawbridgeContainer> drawbridge = null;
}
@Override
public String getModId() {
return TMechworks.modId;
}
@SubscribeEvent
public void registerBlocks(final RegistryEvent.Register<Block> event) {
IForgeRegistry<Block> registry = event.getRegistry();
register(registry, new MetalBlock(), "aluminum_block");
register(registry, new MetalBlock(), "copper_block");
// Machines
register(registry, new FirestarterBlock(), "firestarter");
register(registry, new DrawbridgeBlock(), "drawbridge");
}
@SubscribeEvent
public void registerItems(final RegistryEvent.Register<Item> event) {
IForgeRegistry<Item> registry = event.getRegistry();
register(registry, new MechworksBookItem(), "book");
// Metals
registerBlockItem(registry, Blocks.copper_block, tabMechworks);
registerBlockItem(registry, Blocks.aluminum_block, tabMechworks);
register(registry, new Item(new Item.Properties().group(tabMechworks)), "copper_ingot");
register(registry, new Item(new Item.Properties().group(tabMechworks)), "aluminum_ingot");
register(registry, new Item(new Item.Properties().group(tabMechworks)), "copper_nugget");
register(registry, new Item(new Item.Properties().group(tabMechworks)), "aluminum_nugget");
// Machines
registerBlockItem(registry, Blocks.firestarter, tabMechworks);
registerBlockItem(registry, Blocks.drawbridge, tabMechworks);
// Machine Upgrades
register(registry, new MachineUpgradeItem(stats -> stats.isAdvanced = true), "upgrade_drawbridge_advanced");
register(registry, new MachineUpgradeItem(stats -> stats.extendLength += MechworksConfig.getInstance().drawbridgeExtendUpgradeValue).setTooltipFormatSupplier(() -> new Object[]{MechworksConfig.getInstance().drawbridgeExtendUpgradeValue}), "upgrade_drawbridge_distance");
register(registry, new MachineUpgradeItem(stats -> stats.extendDelay -= MechworksConfig.getInstance().drawbridgeSpeedUpgradeValue).setTooltipFormatSupplier(() -> new Object[]{MechworksConfig.getInstance().drawbridgeSpeedUpgradeValue}), "upgrade_speed");
}
@SubscribeEvent
public void registerTileEntities(final RegistryEvent.Register<TileEntityType<?>> event) {
IForgeRegistry<TileEntityType<?>> registry = event.getRegistry();
registerTE(registry, FirestarterTileEntity::new, "firestarter", Blocks.firestarter);
registerTE(registry, DrawbridgeTileEntity::new, "drawbridge", Blocks.drawbridge);
}
@SubscribeEvent
public void registerContainers(final RegistryEvent.Register<ContainerType<?>> event) {
IForgeRegistry<ContainerType<?>> registry = event.getRegistry();
register(registry, IForgeContainerType.create(DisguiseContainer::factory), "disguise");
register(registry, IForgeContainerType.create(DrawbridgeContainer::factory), "drawbridge");
}
@OnlyIn(Dist.CLIENT)
public void registerScreenFactories() {
ScreenManager.registerFactory(Containers.disguise, DisguiseScreen::create);
ScreenManager.registerFactory(Containers.drawbridge, DrawbridgeScreen::create);
}
// public void registerEntities(final RegistryEvent.Register<EntityType<?>> event){}
public void preInit(FMLCommonSetupEvent event) {
}
public void init(InterModEnqueueEvent event) {
}
public void postInit(InterModProcessEvent event) {
tabMechworks.setDisplayIcon(new ItemStack(Items.book));
}
@Override
public BlockItem registerBlockItem(IForgeRegistry<Item> registry, Block block, ItemGroup group) {
BlockItem itemBlock = new MechworksBlockItem(block, new Item.Properties().group(group));
return this.register(registry, itemBlock, block.getRegistryName());
}
}