- 198
- 1
- 24
Я недавно уже поднимал эту тему, но там больше были непонятки из-за различий в версиях "кубов" и в маппингах. Туториал который мне посоветовали - вот этот - очень удобный и понятный, код компилируется и запускается, но... Нет там такой жидкости! Предположительно, дело в регистрации.
Файлы мода:
water.json в папке data мода тоже есть, названия соответственно изменены.
При запуске ничего не крашит, тупо нет такой жидкости.
Нет .json модельки ведра, но это же не фатально? Просто ведро фиолетово-чёрно-шахматный квадрат (ПКМ ничего не делает).
Файлы мода:
ModFluids.java:
public class ModFluids {
public static final ResourceLocation AMMONIA_STILL_RL = new ResourceLocation("block/water_still");
public static final ResourceLocation AMMONIA_FLOWING_RL = new ResourceLocation("block/water_flow");
public static final ResourceLocation AMMONIA_OVERLAY_RL = new ResourceLocation("block/water_overlay");
public static final DeferredRegister<Fluid> FLUIDS
= DeferredRegister.create(ForgeRegistries.FLUIDS, "distantworlds");
public static final RegistryObject<FlowingFluid> AMMONIA_FLUID
= FLUIDS.register("ammonia_fluid", () -> new ForgeFlowingFluid.Source(ModFluids.AMMONIA_PROPERTIES));
public static final RegistryObject<FlowingFluid> AMMONIA_FLOWING
= FLUIDS.register("ammonia_flowing", () -> new ForgeFlowingFluid.Flowing(ModFluids.AMMONIA_PROPERTIES));
public static final ForgeFlowingFluid.Properties AMMONIA_PROPERTIES = new ForgeFlowingFluid.Properties(
() -> AMMONIA_FLUID.get(),
() -> AMMONIA_FLOWING.get(),
FluidAttributes.builder(AMMONIA_STILL_RL, AMMONIA_FLOWING_RL)
.density(15)
.luminosity(2)
.viscosity(5)
.sound(SoundEvents.HONEY_DRINK).overlay(AMMONIA_OVERLAY_RL)
.color(0x88886688)) //This is RGB+Alpha, not just RGB!
.slopeFindDistance(4)
.levelDecreasePerBlock(2)
.block(() -> ModFluids.AMMONIA_BLOCK.get()).bucket(() -> ModItems.AMMONIA_BUCKET.get());
public static final RegistryObject<FlowingFluidBlock> AMMONIA_BLOCK = ModBlocks.BLOCKS.register("liquid_ammonia",
() -> new FlowingFluidBlock(() -> ModFluids.AMMONIA_FLUID.get(), AbstractBlock.Properties.of(Material.WATER)
.noCollission()
.strength(100f)
.noDrops()));
public static void register(IEventBus eventBus) {
FLUIDS.register(eventBus);
}
}
ModItems.java:
public class ModItems {
public static final DeferredRegister<Item> ITEMS =
DeferredRegister.create(ForgeRegistries.ITEMS, "distantworlds");
public static final RegistryObject<Item> AMMONIA_BUCKET = ITEMS.register("ammonia_bucket",
() -> new BucketItem(() -> ModFluids.AMMONIA_FLUID.get(),
new Item.Properties()
.stacksTo(1)
//.group(ModItemGroup.TUTORIAL_GROUP)));
.tab(ItemGroup.TAB_MISC)));
public static void register(IEventBus eventBus) {
ITEMS.register(eventBus);
}
}
ModBlocks.java:
public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS
= DeferredRegister.create(ForgeRegistries.BLOCKS, "distantworlds");
private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block) {
RegistryObject<T> toReturn = BLOCKS.register(name, block);
registerBlockItem(name, toReturn);
return toReturn;
}
private static <T extends Block> void registerBlockItem(String name, RegistryObject<T> block) {
ModItems.ITEMS.register(name, () -> new BlockItem(block.get(),
new Item.Properties().tab(ItemGroup.TAB_MISC)));
//new Item.Properties().tab(ModItemGroup.TUTORIAL_GROUP)));
}
public static void register(IEventBus eventBus) {
BLOCKS.register(eventBus);
}
}
Регистрация в главном классе::
IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();
ModItems.register(eventBus);
ModBlocks.register(eventBus);
ModFluids.register(eventBus);
water.json в папке data мода тоже есть, названия соответственно изменены.
При запуске ничего не крашит, тупо нет такой жидкости.
Нет .json модельки ведра, но это же не фатально? Просто ведро фиолетово-чёрно-шахматный квадрат (ПКМ ничего не делает).