Résolu Bucket et Liquide
-
if(world.getBlockState(new BlockPos(entity.posX, entity.posY, entity.posZ).getBlock() == BlockMod.tarmacLiquid || world.getBlockState(new BlockPos(entity.posX, entity.posY, entity.posZ).up().getBlock() == BlockMod.tarmacLiquid)
devrait être suffisant. -
Merci ! Comme ça, ça lag moins !
J’ai un dernier petit problème, je pence pas que ce soir trais important mais bon. Quand je prend mon liquide en item, sa texture c’est un block noir et rose (au lieux de l’item plat du liquide).
Voici le code que j’ai mit pour définir le model du liquide (pris sur un tuto):Item item = Item.getItemFromBlock(fluid); final ModelResourceLocation resLoc = new ModelResourceLocation(ModMaxyFactory.MOD_ID + ":" + fluid.getUnlocalizedName().substring(5), "tarmacliquid"); ModelBakery.addVariantName(item); ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() { @Override public ModelResourceLocation getModelLocation(ItemStack stack) { return resLoc; } }); ModelLoader.setCustomStateMapper(fluid, new StateMapperBase() { @Override protected ModelResourceLocation getModelResourceLocation(IBlockState p_178132_1_) { return resLoc; } });
et voici le blockstate de mon liquide :
{ "forge_marker": 1, "defaults": { "model": "forge:fluid", "transform": "forge:default-item" }, "variants": { "tarmacliquid" : [{ "custom": { "fluid": "fluid_tarmac" } }] } }
Dites moi si il y a des choses à changer.
-
Salut, pourrais-tu me passer tout ton code de liquide pour que je puisse voir de mon côté, merci.
-
@‘elx9000’:
Salut, pourrais-tu me passer tout ton code de liquide pour que je puisse voir de mon côté, merci.
Il n’y a pas grand chose de plus que je pourrais ajouter. C’est deux lignes peuvent peut-être être utiles :
fluidTarmac = new Fluid("fluid_tarmac", new ResourceLocation("maxyfactory:blocks/tarmac"), new ResourceLocation("maxyfactory:blocks/tarmac_flowing")).setTemperature(800); tarmacLiquid = ((BlockFluidClassic) new TarmacLiquid(FluidMod.fluidTarmac, MaterialMod.liquid).setUnlocalizedName("tarmacLiquid")).setTickRate(20).setQuantaPerBlock(5).setTemperature(800);
TarmacLiquid est just un extends de BlockFluidClassic.(La class de forge qui permet de faire des liquides simplement)
-
Merci je vais voir ce que je peux faire
-
Pourrais - tu me passer exactement tout ton code (même la plus petite ligne), j’ai beaucoup de mal à recréer ton fluide.
Merci d’avance.
-
Dans FMLPreInitializationEvent, il y a :
:::Fluid fluidTarmac = new Fluid("fluid_tarmac", new ResourceLocation("maxyfactory:blocks/tarmac"), new ResourceLocation("maxyfactory:blocks/tarmac_flowing")).setTemperature(800); FluidRegistry.registerFluid(fluidTarmac); Block tarmacLiquid = ((BlockFluidClassic) new BlockFluidClassic(FluidMod.fluidTarmac, MaterialMod.liquid).setUnlocalizedName("tarmacLiquid")).setTickRate(20).setQuantaPerBlock(5).setTemperature(800); GameRegistry.registerBlock(tarmacLiquid, "tarmacLiquid"); Item itemTarmacLiquid = Item.getItemFromBlock(tarmacLiquid); final ModelResourceLocation resLoc = new ModelResourceLocation("maxyfactory:fluid_tarmac", "tarmacliquid"); ModelBakery.addVariantName(item); ModelLoader.setCustomMeshDefinition(itemTarmacLiquid, new ItemMeshDefinition() { @Override public ModelResourceLocation getModelLocation(ItemStack stack) { return resLoc; } }); ModelLoader.setCustomStateMapper(itemTarmacLiquid, new StateMapperBase() { @Override protected ModelResourceLocation getModelResourceLocation(IBlockState p_178132_1_) { return resLoc; } });
:::
Dans FMLInitializationEvent (coté client), il y a ça :
:::Item itemTarmacLiquid = Item.getItemFromBlock(tarmacLiquid); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(itemTarmacLiquid, 0, new ModelResourceLocation("maxyfactory:" + itemTarmacLiquid.getUnlocalizedName().substring(5), "inventory"));
:::
-
Ok merci, je travaille dessus
-
J’ai trouvé la solution, c’était tout bête : il fallait enlever ce qui il a dans init car cela rajoute une localisation du model et ça fait un bug.
Merci à tous pour votre aide !