JUKILO
@JUKILO

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ただしいウリ科のつくりかた 改め ただしい茎のぬりかた in Minecraft

困っていること

マインクラフトでModを制作しており、新たに作物としてメロンを作っています。
作物の育ち方は、既存ブロックのスイカやカボチャのように、耕地に生えた茎と隣接するボクセルに実が成るタイプのものを想定しています。
この茎が育ち実が成る仕組みの過程で、テクスチャが正しく反映されずに切羽詰まっている状況です。
(2021/10/14/02:00 追記 解決しました!)

現状、育つ仕組みについては解決しましたので、今度は茎の色に関して課題を抱えています。
モノクロになってしまい、緑の色がついてくれません…

スイカの実が詰まっていても作業は詰まらせたくないので,どなたか知恵をお貸しください。
ドテカボチャな私で申し訳ありませんが、よろしくお願い致します。

作業環境

Java 1.8.0_291-b10
Minecraft Forge Mdk 1.16.5 - 36.2.0
IntelliJ IDEA Community Edition 2021.2.2

現状

桜鬼神 様の動画:
【Minecraft】自作Modの作り方1.16.4
https://www.youtube.com/playlist?list=PLWwlnq188K5yp17y1zo1EB7qRZGtTXMNP
を参考にMODを制作している。
仕組みは、登録するブロックやアイテムを.javaファイル毎に書き、
登録用のクラスにこれらを書き込むというもの。

つくったもの(.java)

(赤肉)メロンブロック ID : orange_flesh_melon

破壊すると「メロンの薄切り」を数個ドロップ。

親クラス↓

(赤肉)メロンの薄切り ID : orange_flesh_melon_slice

腹持ちはスイカと同じ。

親クラス↓

(赤肉)メロンの種 ID : orange_flesh_melon_seed

まだ耕地に植える仕組みは実装していない。

親クラス↓(薄切りと同じ)

メロンの茎 ID : orange_flesh_melon_stem

テクスチャはスイカの茎を流用したい。
モノクロ。色付けがわからない。(ここが現在の主な問題箇所です。)

親クラス↓

実につながったメロンの茎 ID : attached_orange_flesh_melon_stem

テクスチャは実につながったスイカの茎を流用したい。
モノクロ。色付けがわからない。(ここが現在の主な問題箇所です。)
耕地ブロックの上に置いたときにだけエラーブロックになってしまう。
育って実を付けたときも、実はメロンではなくエラーブロックになる。

(2021/10/14/02:00 追記 解決しました!)

親クラス↓

image.png
(エラーブロックについては解決しています。)

ソースコード

今回の問題に関係があるjavaファイルを掲載します。

OrangeFleshMelon.java

package com.Jukilo.croplus.block;

import com.Jukilo.croplus.regi.CroplusBlocks;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.block.material.MaterialColor;
import net.minecraftforge.common.ToolType;

import javax.annotation.Nonnull;

public class OrangeFleshMelon extends StemGrownBlock {

    public OrangeFleshMelon()
    {
        super(Properties
                .of(Material.VEGETABLE, MaterialColor.COLOR_LIGHT_GREEN)
                .harvestTool(ToolType.AXE)
                .harvestLevel(-1)
                .sound(SoundType.WOOD)
                .strength(1F,1F));
        this.setRegistryName("orange_flesh_melon");
    }

    @Override
    public @Nonnull StemBlock getStem()  {return CroplusBlocks.ORANGE_FLESH_MELON_STEM;}

    @Override
    public @Nonnull AttachedStemBlock getAttachedStem()  {return CroplusBlocks.ATTACHED_ORANGE_FLESH_MELON_STEM;}
}

OrangeFleshMelonStem.java

package com.Jukilo.croplus.block;

import com.Jukilo.croplus.regi.CroplusBlocks;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.block.StemBlock;
import net.minecraft.block.material.MaterialColor;

public class OrangeFleshMelonStem extends StemBlock {

    public OrangeFleshMelonStem() {
        super(CroplusBlocks.ORANGE_FLESH_MELON,
                AbstractBlock.Properties.of(Material.PLANT, MaterialColor.PLANT)
                        .noCollission()
                        .randomTicks()
                        .instabreak()
                        .sound(SoundType.HARD_CROP));

        this.setRegistryName("orange_flesh_melon_stem");
    }
}

AttachedOrangeFleshMelonStem.java

package com.Jukilo.croplus.block;

import com.Jukilo.croplus.regi.CroplusBlocks;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.block.material.MaterialColor;

public class AttachedOrangeFleshMelonStem extends AttachedStemBlock {

    public AttachedOrangeFleshMelonStem() {
        super(CroplusBlocks.ORANGE_FLESH_MELON,
                AbstractBlock.Properties.of(Material.PLANT,MaterialColor.PLANT)
                .noCollission()
                .instabreak()
                .sound(SoundType.WOOD));

        this.setRegistryName("attached_orange_flesh_melon_stem");
    }
}

CroplusBlock.java

package com.Jukilo.croplus.regi;

import com.Jukilo.croplus.block.AttachedOrangeFleshMelonStem;
import com.Jukilo.croplus.block.OrangeFleshMelon;
import com.Jukilo.croplus.block.OrangeFleshMelonStem;

import com.Jukilo.croplus.main.Croplus;
import com.google.common.base.Preconditions;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.RenderTypeLookup;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
import net.minecraftforge.registries.ObjectHolder;

@ObjectHolder("croplus")
public class CroplusBlocks {

    public static final OrangeFleshMelon ORANGE_FLESH_MELON = new OrangeFleshMelon();
    public static final OrangeFleshMelonStem ORANGE_FLESH_MELON_STEM = new OrangeFleshMelonStem();
    public static final AttachedOrangeFleshMelonStem ATTACHED_ORANGE_FLESH_MELON_STEM = new AttachedOrangeFleshMelonStem();

    @Mod.EventBusSubscriber(modid = "croplus",bus= Bus.MOD)
    public static class Register {
        @SubscribeEvent
        public static void registerBlocks(final RegistryEvent.Register<Block> event) {
            final Block[] blocks = {
                    ORANGE_FLESH_MELON,
                    ORANGE_FLESH_MELON_STEM,
                    ATTACHED_ORANGE_FLESH_MELON_STEM
            };
            event.getRegistry().registerAll(blocks);

            for(Block block : blocks){
                if(
                        block instanceof OrangeFleshMelonStem||
                        block instanceof AttachedOrangeFleshMelonStem
                ) {
                    RenderTypeLookup.setRenderLayer(block, RenderType.cutout());
                }
            }
        }
        @SubscribeEvent
        public static void registerBlockItem(final RegistryEvent.Register<Item> event){
            final BlockItem[] items ={
                    new BlockItem(ORANGE_FLESH_MELON,new Item.Properties().tab(Croplus.CROPLUS_TAB))
            };
            for (BlockItem item:items){
                final Block block = item.getBlock();
                final ResourceLocation location = Preconditions.checkNotNull(block.getRegistryName(),"This has no registry name.");
                event.getRegistry().register(item.setRegistryName(location));
            }
        }
    }
}

さいごに

Forge 1.17.1がクラッシュしてしまう問題も抱えおり、そちらの方でも助け舟を頂きたい次第です…(2021/10/31 追記:こちらの方もMinecraftを再インストールすることで解決しました。)
Qiitaをあまり使わず不慣れなもので不束な部分もございますが、何卒よろしくお願い致します。

0

No Answers yet.

Your answer might help someone💌