ただしいウリ科のつくりかた 改め ただしい茎のぬりかた 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 追記 解決しました!)
親クラス↓
ソースコード
今回の問題に関係がある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をあまり使わず不慣れなもので不束な部分もございますが、何卒よろしくお願い致します。