Skip to content

Commit ab7572b

Browse files
committed
Fix rendering issues, add creative tab.
1 parent 9f7b71f commit ab7572b

8 files changed

Lines changed: 105 additions & 30 deletions

File tree

project.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ext {
55
projectName = 'architecturecraft'
66

77
useElytraVersionFormat = true
8-
version = '1'
8+
version = '0' // 0 for now, not stable enough imo.
99

1010
concreteVersion = '0.3.1-SNAPSHOT'
1111
concreteModules = [ 'common' ]

src/main/java/com/elytradev/architecture/base/BaseContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void addPlayerSlots(EntityPlayer player, int x, int y) {
3939
for (int var4 = 0; var4 < 9; ++var4)
4040
this.addSlotToContainer(new Slot(inventory, var4 + var3 * 9 + 9, x + var4 * 18, y + var3 * 18));
4141
for (int var3 = 0; var3 < 9; ++var3)
42-
this.addSlotToContainer(new Slot(inventory, var3, x + var3 * 18, y + 58));
42+
this.addSlotToContainer(new Slot(inventory, var3, x + var3 * 18, y + 57));
4343
playerSlotRange.end();
4444
}
4545

src/main/java/com/elytradev/architecture/base/BaseGui.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,12 @@ public void setMod(BaseMod mod) {
180180
this.mod = mod;
181181
}
182182

183-
// @Override
184-
// public void drawScreen(int par1, int par2, float par3) {
185-
// resetColor();
186-
// textColor = defaultTextColor;
187-
// textShadow = false;
188-
// super.drawScreen(par1, par2, par3);
189-
// }
183+
public void drawScreen(int mouseX, int mouseY, float partialTicks)
184+
{
185+
this.drawDefaultBackground();
186+
super.drawScreen(mouseX, mouseY, partialTicks);
187+
this.renderHoveredToolTip(mouseX, mouseY);
188+
}
190189

191190
@Override
192191
public void initGui() {

src/main/java/com/elytradev/architecture/base/BaseMod.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
package com.elytradev.architecture.base;
88

9+
import com.elytradev.architecture.base.BaseModClient.IModel;
910
import com.elytradev.architecture.common.Trans3;
1011
import com.elytradev.architecture.common.Vector3;
1112
import com.google.common.base.Charsets;
1213
import com.google.common.base.Predicate;
1314
import com.google.common.io.Resources;
1415
import com.google.gson.Gson;
15-
import com.elytradev.architecture.base.BaseModClient.IModel;
1616
import net.minecraft.block.Block;
1717
import net.minecraft.block.state.IBlockState;
1818
import net.minecraft.creativetab.CreativeTabs;
@@ -399,10 +399,10 @@ public <ITEM extends Item> ITEM newItem(String name, Class<ITEM> cls) {
399399
} catch (Exception e) {
400400
throw new RuntimeException(e);
401401
}
402-
return addItem(item, name);
402+
return addItem(item, name, true);
403403
}
404404

405-
public <ITEM extends Item> ITEM addItem(ITEM item, String name) {
405+
public <ITEM extends Item> ITEM addItem(ITEM item, String name, boolean addToList) {
406406
String qualName = assetKey + ":" + name;
407407
item.setUnlocalizedName(qualName);
408408
preRegisteredItems.add(item);
@@ -413,7 +413,8 @@ public <ITEM extends Item> ITEM addItem(ITEM item, String name) {
413413
System.out.printf("BaseMod.addItem: Setting creativeTab of %s to %s\n", name, creativeTab);
414414
item.setCreativeTab(creativeTab);
415415
}
416-
registeredItems.add(item);
416+
if (addToList)
417+
registeredItems.add(item);
417418
return item;
418419
}
419420

@@ -459,9 +460,9 @@ public <BLOCK extends Block> BLOCK addBlock(BLOCK block, String name, Class<? ex
459460
try {
460461
if (Arrays.stream(itemClass.getConstructors()).anyMatch((Predicate<Constructor<?>>)
461462
input -> input != null && input.getParameterCount() == 1 && Block.class.isAssignableFrom(input.getParameterTypes()[0]))) {
462-
addItem(itemClass.getConstructor(Block.class).newInstance(block), name + ".item");
463+
addItem(itemClass.getConstructor(Block.class).newInstance(block), name + ".item", false);
463464
} else {
464-
addItem(itemClass.getConstructor().newInstance(), name + ".item");
465+
addItem(itemClass.getConstructor().newInstance(), name + ".item", false);
465466
}
466467
} catch (Exception e) {
467468
e.printStackTrace();

src/main/java/com/elytradev/architecture/base/BaseModClient.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import net.minecraft.util.math.BlockPos;
2929
import net.minecraft.world.IBlockAccess;
3030
import net.minecraft.world.World;
31+
import net.minecraftforge.client.event.ModelRegistryEvent;
3132
import net.minecraftforge.common.MinecraftForge;
3233
import net.minecraftforge.fml.client.FMLClientHandler;
3334
import net.minecraftforge.fml.client.registry.ClientRegistry;
@@ -36,6 +37,7 @@
3637
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
3738
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
3839
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
40+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
3941
import net.minecraftforge.fml.common.network.IGuiHandler;
4042

4143
import java.lang.reflect.Constructor;
@@ -77,22 +79,32 @@ public static void bindTexture(ResourceLocation rsrc) {
7779
// }
7880

7981
public void preInit(FMLPreInitializationEvent e) {
82+
MinecraftForge.EVENT_BUS.register(this);
83+
8084
//System.out.printf("BaseModClient.preInit\n");
8185
registerSavedVillagerSkins();
82-
for (BaseSubsystem sub : base.subsystems) {
83-
sub.registerBlockRenderers();
84-
sub.registerItemRenderers();
85-
}
86+
8687
if (renderingManager == null && renderingManagerRequired())
8788
getRenderingManager();
8889
if (renderingManager != null)
8990
renderingManager.preInit();
9091
}
9192

93+
@SubscribeEvent
94+
public void onModelRegistration(ModelRegistryEvent event) {
95+
for (BaseSubsystem sub : base.subsystems) {
96+
sub.registerBlockRenderers();
97+
sub.registerItemRenderers();
98+
}
99+
}
100+
101+
92102
//-------------- Screen registration --------------------------------------------------------
93103

94104
public void init(FMLInitializationEvent e) {
95105
//System.out.printf("BaseModClient.init\n");
106+
if (renderingManager != null)
107+
renderingManager.init();
96108
}
97109

98110
public void postInit(FMLPostInitializationEvent e) {
@@ -196,10 +208,8 @@ public void bindTexture(String path) {
196208
* On the client side, this needs to return a instance of GuiScreen
197209
* On the server side, this needs to return a instance of Container
198210
*
199-
* @param ID The Gui ID Number
200211
* @param player The player viewing the Gui
201212
* @param world The current world
202-
* @param pos Position in world
203213
* @return A GuiScreen/Container to be displayed to the user, null if none.
204214
*/
205215

@@ -339,13 +349,16 @@ protected boolean objectNeedsCustomRendering(Object obj) {
339349
public interface IRenderingManager {
340350
void preInit();
341351

352+
void init();
353+
342354
void postInit();
343355

344356
void addBlockRenderer(Block block, ICustomRenderer renderer);
345357

346358
void addItemRenderer(Item item, ICustomRenderer renderer);
347359

348360
IModel getModel(String name);
361+
349362
}
350363

351364
public interface ICustomRenderer {

src/main/java/com/elytradev/architecture/base/BaseRenderingManager.java

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import com.elytradev.architecture.common.Trans3;
1010
import com.google.common.collect.ImmutableList;
11+
import com.google.common.collect.Lists;
1112
import net.minecraft.block.Block;
1213
import net.minecraft.block.state.IBlockState;
1314
import net.minecraft.client.Minecraft;
@@ -19,6 +20,7 @@
1920
import net.minecraft.client.renderer.block.statemap.DefaultStateMapper;
2021
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
2122
import net.minecraft.client.renderer.texture.TextureMap;
23+
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
2224
import net.minecraft.entity.EntityLivingBase;
2325
import net.minecraft.item.Item;
2426
import net.minecraft.item.ItemBlock;
@@ -31,12 +33,16 @@
3133
import net.minecraft.world.World;
3234
import net.minecraftforge.client.MinecraftForgeClient;
3335
import net.minecraftforge.client.event.ModelBakeEvent;
36+
import net.minecraftforge.client.event.ModelRegistryEvent;
3437
import net.minecraftforge.client.event.TextureStitchEvent;
3538
import net.minecraftforge.client.model.ModelLoader;
39+
import net.minecraftforge.client.model.ModelLoaderRegistry;
3640
import net.minecraftforge.common.MinecraftForge;
41+
import net.minecraftforge.common.model.TRSRTransformation;
3742
import net.minecraftforge.fml.common.FMLCommonHandler;
3843
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
3944

45+
import javax.annotation.Nullable;
4046
import java.util.ArrayList;
4147
import java.util.HashMap;
4248
import java.util.List;
@@ -49,7 +55,7 @@ public class BaseRenderingManager<MOD extends BaseMod<? extends BaseModClient>>
4955
protected static Trans3 itemTrans = Trans3.blockCenterSideTurn(0, 2);
5056
protected static String[] texturePrefixes = {"blocks/", "textures/"};
5157
public boolean debugRenderingManager = false;
52-
public boolean debugModelRegistration = false;
58+
public boolean debugModelRegistration = true;
5359
protected BaseModClient<MOD> client;
5460
protected Map<Block, BaseModClient.ICustomRenderer> blockRenderers = new HashMap<Block, BaseModClient.ICustomRenderer>();
5561
protected Map<Item, BaseModClient.ICustomRenderer> itemRenderers = new HashMap<Item, BaseModClient.ICustomRenderer>();
@@ -102,12 +108,17 @@ public static boolean renderAlternateBlock(BaseModClient client,
102108
public void preInit() {
103109
if (debugRenderingManager)
104110
System.out.printf("BaseRenderingManager.preInit\n");
105-
registerDefaultRenderers();
106111
// registerDummyStateMappers();
107112
}
108113

109114
//------------------------------------------------------------------------------------------------
110115

116+
public void init() {
117+
//Moved from preInit due to block registration not being complete.
118+
registerDefaultRenderers();
119+
registerDefaultModelLocations();
120+
}
121+
111122
public void postInit() {
112123
if (debugRenderingManager)
113124
System.out.printf("BaseRenderingManager.postInit: customRenderingRequired = %s\n", customRenderingRequired);
@@ -210,8 +221,12 @@ protected void registerModelLocationForSubtypes(Item item, ModelResourceLocation
210221
if (debugModelRegistration)
211222
System.out.printf("BaseModClient: Registering model location %s for %d subtypes of %s\n",
212223
location, numVariants, item.getUnlocalizedName());
213-
for (int i = 0; i < numVariants; i++)
214-
ModelLoader.setCustomModelResourceLocation(item, i, location);
224+
for (int i = 0; i < numVariants; i++) {
225+
if (Minecraft.getMinecraft().getRenderItem() != null)
226+
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, i, location);
227+
else
228+
ModelLoader.setCustomModelResourceLocation(item, i, location);
229+
}
215230
}
216231

217232
private int getNumBlockSubtypes(Block block) {
@@ -378,14 +393,16 @@ public boolean renderAlternateBlock(IBlockAccess world, BlockPos pos, IBlockStat
378393

379394
//------------------------------------------------------------------------------------------------
380395

396+
@SubscribeEvent
397+
public void onModelRegistryEvent(ModelRegistryEvent event) {
398+
registerDefaultModelLocations();
399+
}
400+
381401
@SubscribeEvent
382402
public void onModelBakeEvent(ModelBakeEvent event) {
383403
if (debugModelRegistration)
384404
System.out.printf("BaseModClient.ModelBakeEvent\n");
385405

386-
//Moved from preInit due to block registration not being complete.
387-
registerDefaultModelLocations();
388-
389406
//getCustomBlockRenderDispatch().install(event);
390407
getItemBakedModel().install(event);
391408
for (CustomBakedModel model : bakedModels) {
@@ -504,9 +521,46 @@ public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, W
504521
rend.renderItemStack(stack, target, itemTrans);
505522
return target.getBakedModel();
506523
} else
507-
return null;
524+
return emptyModel;
508525
}
509526

527+
private IBakedModel emptyModel = new IBakedModel() {
528+
@Override
529+
public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
530+
return Lists.newArrayList();
531+
}
532+
533+
@Override
534+
public boolean isAmbientOcclusion() {
535+
return false;
536+
}
537+
538+
@Override
539+
public boolean isGui3d() {
540+
return false;
541+
}
542+
543+
@Override
544+
public boolean isBuiltInRenderer() {
545+
return false;
546+
}
547+
548+
@Override
549+
public TextureAtlasSprite getParticleTexture() {
550+
return null;
551+
}
552+
553+
@Override
554+
public ItemCameraTransforms getItemCameraTransforms() {
555+
return ItemCameraTransforms.DEFAULT;
556+
}
557+
558+
@Override
559+
public ItemOverrideList getOverrides() {
560+
return ItemOverrideList.NONE;
561+
}
562+
};
563+
510564
}
511565

512566
protected class CustomItemBakedModel extends CustomBakedModel {

src/main/java/com/elytradev/architecture/common/ArchitectureCraft.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.elytradev.architecture.base.BaseMod;
1111
import com.elytradev.architecture.client.ArchitectureCraftClient;
1212
import net.minecraft.block.Block;
13+
import net.minecraft.creativetab.CreativeTabs;
1314
import net.minecraft.entity.player.EntityPlayer;
1415
import net.minecraft.init.Blocks;
1516
import net.minecraft.init.Items;
@@ -30,7 +31,7 @@ public class ArchitectureCraft extends BaseMod<ArchitectureCraftClient> {
3031

3132
public static final String MOD_NAME = "ArchitectureCraft";
3233
public static final String MOD_ID = "architecturecraft";
33-
public static final String VERSION = "1.7.3";
34+
public static final String VERSION = "@VERSION@";
3435
public final static int guiSawbench = 1;
3536
public static ArchitectureCraft mod;
3637

@@ -50,6 +51,12 @@ public ArchitectureCraft() {
5051
super();
5152
mod = this;
5253
channel = new BaseDataChannel(MOD_ID);
54+
creativeTab = new CreativeTabs("architecture") {
55+
@Override
56+
public ItemStack getTabIconItem() {
57+
return new ItemStack(itemHammer);
58+
}
59+
};
5360
//debugCreativeTabs = true;
5461
}
5562

src/main/resources/assets/architecturecraft/lang/en_US.lang

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ item.architecturecraft:sawblade.name=Circular Saw Blade
55
item.architecturecraft:chisel.name=Architect's Chisel
66
item.architecturecraft:hammer.name=Architect's Hammer
77
item.architecturecraft:cladding.name=Cladding
8+
itemGroup.architecture=Architecture Craft

0 commit comments

Comments
 (0)