• Recently Browsing

    No registered users viewing this page.

  • Posts

    • Just in case anyone doesn't feel like opening the MDK to check out the example, this is the one packaged with 1.15.1-30.0.41): package com.example.examplemod; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.stream.Collectors; // The value here should match an entry in the META-INF/mods.toml file @Mod("examplemod") public class ExampleMod { // Directly reference a log4j logger. private static final Logger LOGGER = LogManager.getLogger(); public ExampleMod() { // Register the setup method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); // Register the enqueueIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); // Register the processIMC method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC); // Register the doClientStuff method for modloading FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); // Register ourselves for server and other game events we are interested in MinecraftForge.EVENT_BUS.register(this); } private void setup(final FMLCommonSetupEvent event) { // some preinit code LOGGER.info("HELLO FROM PREINIT"); LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); } private void doClientStuff(final FMLClientSetupEvent event) { // do something that can only be done on the client LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().gameSettings); } private void enqueueIMC(final InterModEnqueueEvent event) { // some example code to dispatch IMC to another mod InterModComms.sendTo("examplemod", "helloworld", () -> { LOGGER.info("Hello world from the MDK"); return "Hello world";}); } private void processIMC(final InterModProcessEvent event) { // some example code to receive and process InterModComms from other mods LOGGER.info("Got IMC {}", event.getIMCStream(). map(m->m.getMessageSupplier().get()). collect(Collectors.toList())); } // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onServerStarting(FMLServerStartingEvent event) { // do something when the server starts LOGGER.info("HELLO from server starting"); } // You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD // Event bus for receiving Registry Events) @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD) public static class RegistryEvents { @SubscribeEvent public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) { // register a new block here LOGGER.info("HELLO from Register Block"); } } }  
    • Just out of curiosity, what happens if you change the icon in your FlatTilesItemGroup to a vanilla item, instead of one of your modded items? I'm just curious if the issue is arising because your item is not registered yet, therefore does not exist, so your tab isn't getting setup? Check out https://mcforge.readthedocs.io/en/1.14.x/concepts/registries/#injecting-registry-values-into-fields for info on ObjectHolders.   Also. . . . .  
    • I am trying to register a dimension I created, but it doesn't show up in game when I build my mod (via /forge dimensions). I pieced together my code using several other references from similar threads and it seems like I have done everything correctly, so I am not exactly sure why it's not working.   Here is where I register my dimension in my Main class. @SubscribeEvent public static void registerDimensions(final RegisterDimensionsEvent event) { ModDimensions.registerDimensions(); } @SubscribeEvent public static void registerModDimensions(final RegistryEvent.Register<ModDimension> event) { event.getRegistry().registerAll ( ModDimensions.SUN_REALM_DIMENSION ); LOGGER.info("Mod dimensions registered."); }   Here is where my dimension is initialized. public class ModDimensions { //Mod Dimensions public static final ModDimensionType SUN_REALM_DIMENSION = new ModDimensionType(new ResourceLocation(Main.MOD_ID, "sr_dimension")); //Dimension Types //public static DimensionType SUN_REALM; public static void registerDimensions() { DimensionManager.registerDimension(new ResourceLocation(Main.MOD_ID, "sr_dimension"), SUN_REALM_DIMENSION, null, true); } }   Here is my ModDimension class. public class ModDimensionType extends ModDimension { public ModDimensionType(final ResourceLocation registryName) { this.setRegistryName(registryName); } public static DimensionType getDimensionType() { return DimensionType.byName(new ResourceLocation(Main.MOD_ID, "sr_dimension")); } @Override public BiFunction<World, DimensionType, ? extends Dimension> getFactory() { return SunRealmDimension::new; } }     My Dimension class is basically just scrapped reusing existing biomes and chunk generation: public class SunRealmDimension extends Dimension { public static final BlockPos SPAWN = new BlockPos(100, 50, 0);; public SunRealmDimension(final World worldIn, final DimensionType dimension) { super(worldIn, dimension, 1.0F); } @Override public ChunkGenerator<?> createChunkGenerator() { EndGenerationSettings sunrealmgensettings = (EndGenerationSettings) ChunkGeneratorType.FLOATING_ISLANDS.createSettings(); sunrealmgensettings.setDefaultBlock(Blocks.COBBLESTONE.getDefaultState()); sunrealmgensettings.setDefaultFluid(Blocks.WATER.getDefaultState()); sunrealmgensettings.setSpawnPos(this.getSpawnCoordinate()); return ChunkGeneratorType.FLOATING_ISLANDS.create(this.world, BiomeProviderType.FIXED.create(BiomeProviderType.FIXED.func_226840_a_(this.world.getWorldInfo()).setBiome(Biomes.BADLANDS)), sunrealmgensettings); } @Override public float calculateCelestialAngle(final long p_76563_1_, final float p_76563_3_) { return 0.0f; } @Override @Nullable @OnlyIn(Dist.CLIENT) public float[] calcSunriseSunsetColors(final float p_76560_1_, final float p_76560_2_) { return null; } @Override @OnlyIn(Dist.CLIENT) public Vec3d getFogColor(final float p_76562_1_, final float p_76562_2_) { float f = MathHelper.cos(p_76562_1_ * 6.2831855f) * 2.0f + 0.5f; f = MathHelper.clamp(f, 0.0f, 1.0f); float f2 = 0.7529412f; float f3 = 0.84705883f; float f4 = 1.0f; f2 *= f * 0.94f + 0.06f; f3 *= f * 0.94f + 0.06f; f4 *= f * 0.91f + 0.09f; return new Vec3d((double) f2, (double) f3, (double) f4); } @OnlyIn(Dist.CLIENT) public Vec3d getSkyColor(final BlockPos pos, final float flo) { final float f = this.world.getCelestialAngle(flo); float f2 = MathHelper.cos(f * 6.2831855f) * 2.0f + 0.5f; f2 = MathHelper.clamp(f2, 0.0f, 1.0f); final int i = ForgeHooksClient.getSkyBlendColour(this.world, pos); float f3 = (i >> 16 & 0xFF) / 255.0f; float f4 = (i >> 8 & 0xFF) / 255.0f; float f5 = (i & 0xFF) / 255.0f; f3 *= f2; f4 *= f2; f5 *= f2; return new Vec3d((double) f3, (double) f4, (double) f5); } @Override public boolean hasSkyLight() { return true; } @Override @OnlyIn(Dist.CLIENT) public boolean isSkyColored() { return true; } @Override public boolean canRespawnHere() { return false; } @Override public boolean isSurfaceWorld() { return false; } @Override @OnlyIn(Dist.CLIENT) public float getCloudHeight() { return 8.0f; } @Override @Nullable public BlockPos findSpawn(final ChunkPos p_206920_1_, final boolean p_206920_2_) { final Random random = new Random(this.world.getSeed()); final BlockPos blockpos = new BlockPos(p_206920_1_.getXStart() + random.nextInt(15), 0, p_206920_1_.getZEnd() + random.nextInt(15)); return this.world.getGroundAboveSeaLevel(blockpos).getMaterial().blocksMovement() ? blockpos : null; } @Override public BlockPos getSpawnCoordinate() { return SunRealmDimension.SPAWN; } @Override @Nullable public BlockPos findSpawn(final int p_206921_1_, final int p_206921_2_, final boolean p_206921_3_) { return this.findSpawn(new ChunkPos(p_206921_1_ >> 4, p_206921_2_ >> 4), p_206921_3_); } @Override @OnlyIn(Dist.CLIENT) public boolean doesXZShowFog(final int p_76568_1_, final int p_76568_2_) { return false; } @Override public void onWorldSave() { final CompoundNBT compoundnbt = new CompoundNBT(); this.world.getWorldInfo().setDimensionData(this.world.getDimension().getType(), compoundnbt); } }   Any help would be greatly appreciated.
    • 1.12 is no longer supported on this forum. Please update to a modern version of Minecraft to receive support.
    • Yes, but maybe I miss something... I'm sorry. Thanks for your patience, I will try it myself.
  • Topics

  • Who's Online (See full list)