diff --git a/build.gradle b/build.gradle
index 921d44f..6bfade8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -21,6 +21,10 @@ nova {
wrapper "nova.core:NOVA-Core-Wrapper-MC1.8:$nova_version"
runtime project(":minecraft:1.8")
}
+ "1_11" {
+ wrapper "nova.core:NOVA-Core-Wrapper-MC1.11:$nova_version"
+ runtime project(":minecraft:1.11")
+ }
}
}
diff --git a/minecraft/.gitignore b/minecraft/.gitignore
index a4c6e69..896c508 100644
--- a/minecraft/.gitignore
+++ b/minecraft/.gitignore
@@ -3,5 +3,6 @@
!/build.gradle
!/.gitignore
+!/1.11
!/1.8
!/1.7
diff --git a/minecraft/1.11/.gitignore b/minecraft/1.11/.gitignore
new file mode 100644
index 0000000..85be317
--- /dev/null
+++ b/minecraft/1.11/.gitignore
@@ -0,0 +1,17 @@
+# Ignore All
+/*
+
+# Sources
+!/src
+
+# github
+!/.gitignore
+!/README.md
+
+# gradle
+!/build.gradle
+!/build.properties
+!/settings.gradle
+!/gradle.properties
+!/gradlew*
+!/gradle
diff --git a/minecraft/1.11/build.gradle b/minecraft/1.11/build.gradle
new file mode 100644
index 0000000..9a9f6e5
--- /dev/null
+++ b/minecraft/1.11/build.gradle
@@ -0,0 +1,64 @@
+apply plugin: "maven-publish"
+apply plugin: "com.jfrog.artifactory"
+apply from: "https://raw.githubusercontent.com/NOVA-Team/NOVA-Gradle/master/shared-scripts/java.gradle"
+
+publishing {
+ publications {
+ main(MavenPublication) {
+ from components.java
+
+ artifactId "NOVA-Worldgen-Wrapper-MC1.11"
+
+ artifact sourcesJar
+ artifact javadocJar
+
+ pom.withXml(writePom(project.properties))
+ }
+ }
+}
+
+artifactory {
+ publish {
+ defaults {
+ publications("main")
+ publishPom = true
+ }
+ }
+}
+
+artifacts {
+ archives jar
+}
+
+apply plugin: 'net.minecraftforge.gradle.forge'
+
+minecraft {
+ version = property("minecraft.version") + "-" + property("forge.version")
+ mappings = 'snapshot_20161220'
+ runDir = "run"
+}
+
+dependencies {
+ compile rootProject
+ compile group: "nova.core", name: "NOVA-Core", version: property("nova_version"), changing: true
+ compile group: "nova.core", name: "NOVA-Core-Wrapper-MC1.11", version: property("nova_version"), classifier: "deobf", changing: true
+}
+
+processResources {
+ // this will ensure that this task is redone when the versions change.
+ inputs.property "version", project.version
+ inputs.property "mcversion", project.minecraft.version
+
+ // replace stuff in mcmod.info, nothing else
+ from(sourceSets.main.resources.srcDirs) {
+ include "mcmod.info"
+
+ // replace version and mcversion
+ expand "version": project.version, "mcversion": project.minecraft.version
+ }
+
+ // copy everything else, thats not the mcmod.info
+ from(sourceSets.main.resources.srcDirs) {
+ exclude "mcmod.info"
+ }
+}
diff --git a/minecraft/1.11/gradle.properties b/minecraft/1.11/gradle.properties
new file mode 100644
index 0000000..160c5b2
--- /dev/null
+++ b/minecraft/1.11/gradle.properties
@@ -0,0 +1,8 @@
+minecraft.version = 1.11
+forge.version = 13.19.1.2189
+forgeGradleVersion = 2.2-SNAPSHOT
+
+packaging = jar
+info.inceptionYear = 2016
+info.description = The NOVA-Worldgen Minecraft 1.11 wrapper.
+info.organization.name = NOVA
diff --git a/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/depmodules/MCWorldgenModule.java b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/depmodules/MCWorldgenModule.java
new file mode 100644
index 0000000..1ec802a
--- /dev/null
+++ b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/depmodules/MCWorldgenModule.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 NOVA, All rights reserved.
+ * This library is free software, licensed under GNU Lesser General Public License version 3
+ *
+ * This file is part of NOVA.
+ *
+ * NOVA is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * NOVA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NOVA. If not, see .
+ */
+package nova.worldgen.wrapper.mc.forge.v1_11.depmodules;
+
+import nova.worldgen.world.WorldInfo;
+import nova.worldgen.wrapper.mc.forge.v1_11.wrapper.world.MCWorldInfo;
+import se.jbee.inject.bind.BinderModule;
+import se.jbee.inject.util.Scoped;
+
+/**
+ * @author ExE Boss
+ */
+public class MCWorldgenModule extends BinderModule {
+
+ @Override
+ protected void declare() {
+ per(Scoped.APPLICATION).bind(WorldInfo.class).to(MCWorldInfo.class);
+ }
+}
diff --git a/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/launch/NovaWorldgenWrapper.java b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/launch/NovaWorldgenWrapper.java
new file mode 100644
index 0000000..e45b955
--- /dev/null
+++ b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/launch/NovaWorldgenWrapper.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2015 NOVA, All rights reserved.
+ * This library is free software, licensed under GNU Lesser General Public License version 3
+ *
+ * This file is part of NOVA.
+ *
+ * NOVA is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * NOVA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NOVA. If not, see .
+ */
+
+package nova.worldgen.wrapper.mc.forge.v1_11.launch;
+
+import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
+import net.minecraftforge.fml.common.registry.GameRegistry;
+import nova.core.loader.Mod;
+import nova.core.wrapper.mc.forge.v1_11.launcher.ForgeLoadable;
+import nova.internal.worldgen.depmodules.WorldgenModule;
+import nova.worldgen.WorldgenManager;
+import nova.worldgen.wrapper.mc.forge.v1_11.depmodules.MCWorldgenModule;
+import nova.worldgen.wrapper.mc.forge.v1_11.wrapper.world.MCWorldInfo;
+import nova.worldgen.wrapper.mc.forge.v1_11.wrapper.world.forward.FWWorldGenerator;
+
+/**
+ *
+ * @author ExE Boss
+ */
+@Mod(id = NovaWorldgenWrapper.id, name = NovaWorldgenWrapper.name, version = NovaWorldgenWrapper.version, modules = { MCWorldgenModule.class, WorldgenModule.class }, novaVersion = "0.0.1")
+public class NovaWorldgenWrapper implements ForgeLoadable {
+
+ public static final String version = "0.0.1";
+ public static final String id = "nova-worldgen-wrapper";
+ public static final String name = "NOVA Worldgen";
+
+ public final WorldgenManager worldgenManager;
+
+ public FWWorldGenerator worldGenerator;
+
+ public NovaWorldgenWrapper(WorldgenManager worldgenManager) {
+ this.worldgenManager = worldgenManager;
+ ((MCWorldInfo)this.worldgenManager.getWorldInfo()).init(this.worldgenManager);
+ this.worldGenerator = new FWWorldGenerator(this.worldgenManager);
+ }
+
+ @Override
+ public void preInit(FMLPreInitializationEvent evt) {
+ GameRegistry.registerWorldGenerator(this.worldGenerator, 0);
+ worldgenManager.init();
+ }
+}
diff --git a/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/wrapper/world/MCWorldInfo.java b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/wrapper/world/MCWorldInfo.java
new file mode 100644
index 0000000..07750b9
--- /dev/null
+++ b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/wrapper/world/MCWorldInfo.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2017 NOVA, All rights reserved.
+ * This library is free software, licensed under GNU Lesser General Public License version 3
+ *
+ * This file is part of NOVA.
+ *
+ * NOVA is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * NOVA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NOVA. If not, see .
+ */
+
+package nova.worldgen.wrapper.mc.forge.v1_11.wrapper.world;
+
+import nova.core.util.registry.Registry;
+import nova.core.util.shape.Cuboid;
+import nova.worldgen.WorldgenManager;
+import nova.worldgen.ore.Ore;
+import nova.worldgen.world.WorldInfo;
+
+/**
+ * @author ExE Boss
+ */
+public class MCWorldInfo extends WorldInfo {
+
+ private WorldgenManager worldgenManager;
+
+ public void init(WorldgenManager worldgenManager) {
+ this.worldgenManager = worldgenManager;
+ }
+
+ @Override
+ public Cuboid getWorldDimmensions() {
+ return new Cuboid(Double.NEGATIVE_INFINITY, 0, Double.NEGATIVE_INFINITY,
+ Double.POSITIVE_INFINITY, 256, Double.POSITIVE_INFINITY);
+ }
+
+ @Override
+ public Cuboid getWorldGenerationUnitDimmensions() {
+ return new Cuboid(0, 0, 0, 16, 16, 16);
+ }
+
+ @Override
+ public Registry getOreGenerationRegistry() {
+ return worldgenManager.registry.stream().filter(gen -> gen instanceof Ore).map(ore -> (Ore) ore).collect(Registry::new, Registry::register, (r1, r2) -> r2.forEach(r1::register));
+ }
+}
diff --git a/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/wrapper/world/forward/FWWorldGenerator.java b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/wrapper/world/forward/FWWorldGenerator.java
new file mode 100644
index 0000000..4de4c56
--- /dev/null
+++ b/minecraft/1.11/src/main/java/nova/worldgen/wrapper/mc/forge/v1_11/wrapper/world/forward/FWWorldGenerator.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2015 NOVA, All rights reserved.
+ * This library is free software, licensed under GNU Lesser General Public License version 3
+ *
+ * This file is part of NOVA.
+ *
+ * NOVA is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * NOVA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with NOVA. If not, see .
+ */
+
+package nova.worldgen.wrapper.mc.forge.v1_11.wrapper.world.forward;
+
+import net.minecraft.block.Block;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.IChunkGenerator;
+import net.minecraft.world.chunk.IChunkProvider;
+import net.minecraft.world.gen.feature.WorldGenMinable;
+import net.minecraftforge.fml.common.IWorldGenerator;
+import nova.internal.core.Game;
+import nova.worldgen.WorldgenManager;
+import nova.worldgen.event.WorldgenEvent;
+import nova.worldgen.generator.CustomGenerator;
+import nova.worldgen.ore.Ore;
+import nova.worldgen.ore.OreHeight;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ExE Boss
+ */
+public class FWWorldGenerator implements IWorldGenerator {
+
+ private final Map oreGen;
+ private final Set customGenerators;
+ private final WorldgenManager worldgenManager;
+
+ public FWWorldGenerator(WorldgenManager worldgenManager) {
+ this.worldgenManager = worldgenManager;
+ this.oreGen = new HashMap<>();
+ this.customGenerators = new HashSet<>();
+ Game.events().on(WorldgenEvent.Register.class).bind(evt -> {
+ if (evt.generable instanceof Ore) {
+ this.oreGen.put((Ore) evt.generable, new WorldGenMinable(((Block)Game.natives().toNative(((Ore)evt.generable).block.build())).getDefaultState(), (int) Math.round(((Ore)evt.generable).clusterSize * 5)));
+ } else if (evt.generable instanceof CustomGenerator) {
+ this.customGenerators.add((CustomGenerator) evt.generable);
+ }
+ });
+ }
+
+ @Override
+ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) {
+ double worldScale = world.provider.getAverageGroundLevel();
+ this.oreGen.forEach((ore, generator) -> {
+ double baseCount = 12 * ore.rarity * worldScale / 64;
+ int count = (int) Math.round(random.nextGaussian() * Math.sqrt(baseCount) + baseCount);
+ for(int i = 0; i < count; i++) {
+ // OreHeight Values: (when worldScale == 64, which is the default)
+ // SURFACE = 60 (55-65)
+ // UNDERSURFACE = 50 (45-55)
+ // DEEP = 40 (35-45)
+ // DEEPER = 30 (25-35)
+ // DEEPERER = 20 (15-25)
+ // REALLYDEEP = 10 (5-15)
+
+ List oreHeightList = Arrays.stream(OreHeight.values()).filter(ore.oreLayers::allows).collect(Collectors.toList());
+ if (oreHeightList.isEmpty()) return;
+
+ OreHeight height = oreHeightList.get(random.nextInt(oreHeightList.size()));
+ double yAdd = (OreHeight.values().length - height.ordinal() - 1) * (10 * worldScale / 64) + (5 * worldScale / 64);
+
+ int x = chunkX + random.nextInt(16);
+ int y = (int) Math.round(yAdd + (random.nextDouble() * 10 * worldScale / 64));
+ int z = chunkZ + random.nextInt(16);
+
+ generator.generate(world, random, new BlockPos(x, y, z));
+ }
+ });
+ this.customGenerators.forEach(generator -> generator.generate(random, chunkX, chunkZ, worldScale, Game.natives().toNova(world), this.worldgenManager.getWorldInfo()));
+ }
+}
diff --git a/settings.gradle b/settings.gradle
index 6c5737d..aa20a86 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,5 @@
rootProject.name = "NOVA-Worldgen"
+include "minecraft:1.11"
include "minecraft:1.8"
include "minecraft:1.7"