-
Posts
265 -
Joined
-
Last visited
-
Days Won
2
Everything posted by blinky000
-
Does / will 1.14 support .mdl wavefront models?
-
if its .obj, that would be forge. It's odd Smooth lighting is a minecraft thing. I was just hoping somebody might have an idea .
-
-
Building mod results in "No such version exists!"
blinky000 replied to PirateCody's topic in ForgeGradle
Thanks for info, worked good for me -
if the UV setting go outside the original texture, automatically tile the texture
-
Just looked at some stairs, in a vanilla 12.2 and 13.2 , stairs pass light just like my custom blocks. So i guess that's the way it is. Unless of course it's my vid card, but i kinda doubt it
-
Never did like IHasModel, came from a tutorial on 1.12. and yeahi need to i think about more code- wise . what about the light? i missing some setting.
-
I'm open to constructive criticism, how is it mess up? Any way this is what is set on the block (i made an in game query tool ) +++++++++ meta: 0 Block: yabm:yb_roof_slope_3_east BB: box[0.0, 0.0, 0.0 -> 1.0, 1.0, 1.0] Harndess: 0.0 Material: net.minecraft.block.material.Material@12145061 Opacity: 255 LightValue: 0 CB: box[0.0, 0.0, 0.0 -> 1.0, 1.0, 1.0] useNeighborBrightness: true Opaque: false Full Cube: false Full Block: false Block Layer: Mipped Cutout
-
forget what i said about isOpaqueCube , if i make that true, removes faces from block next to it
-
new YobBlockStdHorzCB("yb_roof_slope_"+i, Material.ROCK, Main.YOB_ROOFS_TAB, true, "yb_roof_slope","style=s"+i, CbShapes.SLOPE_ALL); public class YobBlockStdHorzCB extends YobBlockStandardImp implements IYbFacingHelper, IHasModel { private YobBlockStdCB[] blocks = new YobBlockStdCB[4]; public YobBlockStdHorzCB(String registryName, Material material, CreativeTabs tab, boolean hasItem, String location, String variant, ArrayList<AxisAlignedBB>[] cbList) { super(registryName, material, tab, hasItem, new ModelResourceLocation(Reference.MODID+":"+location,"facing=north,"+variant),true,false,false ); String var; for(int i=0 ; i<4 ; i++) { if(variant == ""){ var = "facing=" + (EnumFacing.VALUES[i+2]).toString().toLowerCase(); } else var = "facing=" + (EnumFacing.VALUES[i+2]).toString().toLowerCase() + "," + variant; this.blocks[i] = new YobBlockStdCB(registryName +"_"+ (EnumFacing.VALUES[i+2]).toString().toLowerCase(), material, tab, false, location , var, cbList[i]); } } @Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack){ EnumFacing playerFacing = getPlayerFacing(pos, placer); System.out.println("-------------------------------------------------------------------stdHrz placed"); if(playerFacing.ordinal() > 1 ) world.setBlockState(pos, this.blocks[playerFacing.ordinal() - 2].getDefaultState(),2); } } public class YobBlockStdCB extends YobBlockStandardImp implements IHasModel, isDestroyable{ private ArrayList<AxisAlignedBB> cBoxList; public YobBlockStdCB(String registryName, Material material, CreativeTabs tab, boolean hasItem, String location, String varient, ArrayList<AxisAlignedBB> cBoxList) { super(registryName, material, tab, hasItem, new ModelResourceLocation(Reference.MODID + ":" + location,varient),true,false,false); this.cBoxList = cBoxList; } @Override @SideOnly(Side.CLIENT) // choices are : CUTOUT, CUTOUT_MIPPED, SOLID, TRANSLUCENT public BlockRenderLayer getBlockLayer() { return BlockRenderLayer.CUTOUT_MIPPED; } @Override public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, Entity entityIn, boolean isActualState) { for( AxisAlignedBB aabb: getCollisionBoxList(state)){ addCollisionBoxToList(pos, entityBox, collidingBoxes, aabb); } } protected List<AxisAlignedBB> getCollisionBoxList(IBlockState state) { return this.cBoxList; } @Override public RayTraceResult collisionRayTrace(IBlockState blockState, World worldIn, BlockPos pos, Vec3d start, Vec3d end){ List<RayTraceResult> list = Lists.<RayTraceResult>newArrayList(); if(blockState == null) { System.out.println("Block State Error!"); } for (AxisAlignedBB axisalignedbb : getCollisionBoxList(blockState)){ list.add(this.rayTrace(pos, start, end, axisalignedbb)); } RayTraceResult raytraceresult1 = null; double d1 = 0.0D; for (RayTraceResult raytraceresult : list){ if (raytraceresult != null){ double d0 = raytraceresult.hitVec.squareDistanceTo(end); if (d0 > d1){ raytraceresult1 = raytraceresult; d1 = d0; } } } return raytraceresult1; } } public class YobBlockStandardImp extends YobBlockImp implements IHasModel{ protected boolean hasItem; private boolean opaque = true, fullBlock = true, fullCube = true; public YobBlockStandardImp(String registryName, Material material,CreativeTabs tab) { this(registryName, material,tab, true, new ModelResourceLocation("yabm:"+registryName,""), true, true, true); } public YobBlockStandardImp(String registryName, Material material,CreativeTabs tab, String modelLocation) { this(registryName, material, tab, true, new ModelResourceLocation(modelLocation,""), true, true, true); } public YobBlockStandardImp(String registryName, Material material,CreativeTabs tab, boolean hasItem ,ModelResourceLocation modelLocation) { this(registryName, material, tab, true, modelLocation, true, true, true); } public YobBlockStandardImp(String registryName, Material material,CreativeTabs tab, boolean hasItem ,ModelResourceLocation modelLocation, boolean opaque, boolean fullBlock, boolean fullCube) { super(registryName, registryName, material, tab, hasItem, modelLocation); this.hasItem = hasItem; this.opaque = opaque; this.fullBlock = fullBlock; this.fullCube = fullCube; this.useNeighborBrightness = true; this.setLightOpacity(255); } @Override public boolean isOpaqueCube(IBlockState state){ return this.opaque; } @Override public boolean isFullBlock(IBlockState state){ return this.fullBlock; } @Override public boolean isFullCube(IBlockState state) { return this.fullCube; } @Override public void onBlockDestroyedByPlayer(World world, BlockPos pos, IBlockState state) { System.out.println("YobBlockStandardImp"); } @Override public void registerModels() { //Main.proxy.registerItemRenderer(Item.getItemFromBlock(this), 0, "inventory"); ModelLoader.setCustomStateMapper(this,new CustomStateMapperBase(this.getModelLocation())); if(this.hasItem) Main.proxy.registerItemRenderer(this, 0, this.getModelLocation().getVariant()); } } After making sure that it has isOpaueCube return true , left hand corner showing light. Not as bad as it was but not good. (i changed the texture )
-
In the picture the block on the left has a torch under it, the others do not. This is what i mean about leaking light. It is a .obj model
-
My obj models pass light . opaque = false, fullBlock = false , fullCube = false , useNeighborBrightness = true; setLightOpacity(255);
-
forgot to edit registerItemRenderer() all good now
-
i overwrote the StateMapper: public class CustomStateMapperBase extends StateMapperBase{ public CustomStateMapperBase(String stateString) { //this.stateString = stateString; } @Override protected ModelResourceLocation getModelResourceLocation(IBlockState state) { YobBlockColumnBase block = (YobBlockColumnBase) state.getBlock(); return new ModelResourceLocation("yabm:yb_marble_col_base", "style="+block.myStyle); } } and in my block this function is called during the register event: @Override public void registerModels() { YobBlock b = this; ModelLoader.setCustomStateMapper(b, new CustomStateMapperBase("style="+this.myStyle)); Main.proxy.registerItemRenderer(Item.getItemFromBlock(b), 0, "style="+this.myStyle); } the block placed is fine, works well, the block in inventory is a missing texture cube
-
i see how i can modigy the statemapper to return the resouce location i want, but not sure how to connect it to the block class
-
I'll check it out, im sure ill have more questions, thanks
-
I saw something about that, but it was for 1.8 and is it worth if 1.13 changes evreything
-
My thinkiing was i would pass the STYLE as a variable when creating the block, then set the blockstate that way public class YobBlockColumnBase extends YobBlock implements IHasModel{ private EYbStyleEnumHandler_7.EnumType myStyle; public static final PropertyEnum<EYbStyleEnumHandler_7.EnumType> STYLE = PropertyEnum.<EYbStyleEnumHandler_7.EnumType>create("style", EYbStyleEnumHandler_7.EnumType.class); public YobBlockColumnBase(String registryName, Material material, CreativeTabs tab, EYbStyleEnumHandler_7.EnumType style) { super(registryName, Material.ROCK, Main.YOB_BLOCKS_TAB, true, false); this.myStyle = style; //setLightOpacity(255); } @Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack){ // this block world.setBlockState(pos, state.withProperty(STYLE,myStyle), 2); } myStyle being the property passed in. each instance would have it's own Style on creation. I;m trying to avoid having to create 7 different blockstate files. sigh, if i must i must
-
So i would have to have a blockstate file for all the blocks? i was trying to avoid that
-
Trying to setup for 1.13 by not using meta data. I would like to have one class with multiple texture choices. When i create an instance of the class i would pass the style i would like, and set up the blockstate appropriately. So i would be registering multiple instances with different styles. Block init: public static final YobBlockColumnBase MARBLE_COLUMN_BASE = new YobBlockColumnBase("yb_marble_col_base",Material.ROCK,Main.YOB_BLOCKS_TAB,EYbStyleEnumHandler_7.EnumType.S0); public static final YobBlockColumnBase OPAL_COLUMN_BASE = new YobBlockColumnBase("yb__col_base",Material.ROCK,Main.YOB_BLOCKS_TAB,EYbStyleEnumHandler_7.EnumType.S1); public static final YobBlockColumnBase QUAERZ_ROSE_COLUMN_BASE = new YobBlockColumnBase("yb_marble_col_base",Material.ROCK,Main.YOB_BLOCKS_TAB,EYbStyleEnumHandler_7.EnumType.S2); i would like to use just one block state using STYLE, but the blockstate Resource FILE NAME comes from the registryName (or is it unlocalizedName ) either way i can only have one object with that name
-
is it possible in 1.12?
-
1.12 problem with collision boxes and obj models
blinky000 replied to blinky000's topic in Modder Support
There was a change : previous: @Deprecated public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn) current: public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn, boolean isActualState) I should have caught this while updating from 10. USE THE @Override! -
1.12 problem with collision boxes and obj models
blinky000 replied to blinky000's topic in Modder Support
i have been using a custom ray trace from previous version, maybe it's changes. But , it seems only the Entity ignores the collision boxes @Nullable public RayTraceResult collisionRayTrace(IBlockState blockState, World worldIn, BlockPos pos, Vec3d start, Vec3d end) { List<RayTraceResult> list = Lists.<RayTraceResult>newArrayList(); for (AxisAlignedBB axisalignedbb : getCollisionBoxList(this.getActualState(blockState, worldIn, pos))) { list.add(this.rayTrace(pos, start, end, axisalignedbb)); } RayTraceResult raytraceresult1 = null; double d1 = 0.0D; for (RayTraceResult raytraceresult : list) { if (raytraceresult != null) { double d0 = raytraceresult.hitVec.squareDistanceTo(end); if (d0 > d1) { raytraceresult1 = raytraceresult; d1 = d0; } } } return raytraceresult1;