xiaov6666
mod里如何新增一个和某个世界一样的世界???
然后让玩家跳转到这个世界。

扭转万象
这个原版就可以解决
就是复制地图文件夹里的东西然后新建一个世界,然后替换

roj234
本帖最后由 roj234 于 2019-1-27 19:35 编辑

这个是非常麻烦的事!
首先找到这个世界的WorldProvider和ChunkGenerator(这个还好)或者它的实例(这个更麻烦)
然后

新建一个java
  1. public class <随便什么名字> extends 你找到的名字 {
  2.     @Override
  3.     public String getSaveFolder() {
  4.         return "MI_DIM" + getDimension();//这里请自己修改,这就是新世界文件夹的名字
  5.     }
  6. }
复制代码
在新建一个java
  1. public static DimensionType dimType;
  2. public static int dimId = 233;//次元类型ID 可以自己设置,如果想自动请<font color="Red">设为-1(警告:这样的话就不能增删mod)
  3. public static void init(){
  4.         if (id == -1) {
  5.             for (DimensionType type : DimensionType.values()) {
  6.                 if (type.getId() > id) {
  7.                     id = type.getId();//更新id
  8.                 }
  9.             }
  10.             id++;
  11.         }//这下面的两个String第一个是Index、第二个是MODID
  12. dimType = DimensionType.register("mydimension", "examplemod", id, <之前的名字>.class, false);

  13. int id= 2342;//这才是我们看到的DIM几,自动请设为DimensionManager.getNextFreeDimId();注意事项同上    DimensionManager.registerDimension(id, dimType);
  14.         if(DimensionManager.getWorld(id) == null) { //还没创建
  15.             File chunkDir = new File(DimensionManager.getCurrentSaveRootDirectory(), DimensionManager.createProviderFor(id).getSaveFolder());
  16.             if(ForgeChunkManager.savedWorldHasForcedChunkTickets(chunkDir)) {
  17.                 DimensionManager.initDimension(id);
  18.             }
  19.         }
  20. }
复制代码
然后在你MOD的主类里的onServerStart(FMLServerStartingEvent event)调用上面的函数


第一页 上一页 下一页 最后一页