aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2
GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip
The Great Renaming (#3014)
* move kekztech to a single root dir * move detrav to a single root dir * move gtnh-lanthanides to a single root dir * move tectech and delete some gross reflection in gt++ * remove more reflection inside gt5u * delete more reflection in gt++ * fix imports * move bartworks and bwcrossmod * fix proxies * move galactigreg and ggfab * move gtneioreplugin * try to fix gt++ bee loader * apply the rename rules to BW * apply rename rules to bwcrossmod * apply rename rules to detrav scanner mod * apply rename rules to galacticgreg * apply rename rules to ggfab * apply rename rules to goodgenerator * apply rename rules to gtnh-lanthanides * apply rename rules to gt++ * apply rename rules to kekztech * apply rename rules to kubatech * apply rename rules to tectech * apply rename rules to gt apply the rename rules to gt * fix tt import * fix mui hopefully * fix coremod except intergalactic * rename assline recipe class * fix a class name i stumbled on * rename StructureUtility to GTStructureUtility to prevent conflict with structurelib * temporary rename of GTTooltipDataCache to old name * fix gt client/server proxy names
Diffstat (limited to 'src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java')
-rw-r--r--src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java b/src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java
new file mode 100644
index 0000000000..86d9c84e5f
--- /dev/null
+++ b/src/main/java/gregtech/common/WorldgenGTOreSmallPieces.java
@@ -0,0 +1,107 @@
+package gregtech.common;
+
+import static gregtech.api.enums.GTValues.debugSmallOres;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import net.minecraft.world.World;
+import net.minecraft.world.WorldProviderEnd;
+import net.minecraft.world.WorldProviderHell;
+import net.minecraft.world.WorldProviderSurface;
+import net.minecraft.world.chunk.IChunkProvider;
+
+import gregtech.api.GregTechAPI;
+import gregtech.api.util.GTLog;
+import gregtech.api.world.GTWorldgen;
+import gregtech.common.blocks.TileEntityOres;
+
+public class WorldgenGTOreSmallPieces extends GTWorldgen {
+
+ public final short mMinY;
+ public final short mMaxY;
+ public final short mAmount;
+ public final short mMeta;
+ public final boolean mOverworld;
+ public final boolean mNether;
+ public final boolean mEnd;
+ public final boolean twilightForest;
+ public final String mBiome;
+ public static ArrayList<WorldgenGTOreSmallPieces> sList = new ArrayList<>();
+
+ public Class[] mAllowedProviders;
+
+ public WorldgenGTOreSmallPieces(SmallOreBuilder ore) {
+ super(ore.smallOreName, GregTechAPI.sWorldgenList, ore.enabledByDefault);
+ this.mOverworld = ore.dimsEnabled.getOrDefault(SmallOreBuilder.OW, false);
+ this.mNether = ore.dimsEnabled.getOrDefault(SmallOreBuilder.NETHER, false);
+ this.mEnd = ore.dimsEnabled.getOrDefault(SmallOreBuilder.THE_END, false);
+ this.twilightForest = ore.dimsEnabled.getOrDefault(SmallOreBuilder.TWILIGHT_FOREST, false);
+
+ this.mMinY = (short) ore.minY;
+ this.mMaxY = (short) Math.max(this.mMinY + 1, ore.maxY);
+ this.mAmount = (short) Math.max(1, ore.amount);
+ this.mMeta = (short) ore.ore.mMetaItemSubID;
+ this.mBiome = "None";
+
+ if (this.mEnabled) sList.add(this);
+
+ List<Class> allowedProviders = new ArrayList<>();
+ if (this.mNether) {
+ allowedProviders.add(WorldProviderHell.class);
+ }
+
+ if (this.mOverworld) {
+ allowedProviders.add(WorldProviderSurface.class);
+ }
+
+ if (this.mEnd) {
+ allowedProviders.add(WorldProviderEnd.class);
+ }
+ mAllowedProviders = allowedProviders.toArray(new Class[allowedProviders.size()]);
+ }
+
+ @Override
+ public boolean executeWorldgen(World aWorld, Random aRandom, String aBiome, int aDimensionType, int aChunkX,
+ int aChunkZ, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) {
+ if (!this.mBiome.equals("None") && !(this.mBiome.equals(aBiome))) {
+ return false; // Not the correct biome for ore mix
+ }
+ if (!isGenerationAllowed(aWorld, mAllowedProviders)) {
+ return false;
+ }
+ int count = 0;
+ // For optimal performance, this should be done upstream. Meh
+ String tDimensionName = aWorld.provider.getDimensionName();
+ boolean isUnderdark = tDimensionName.equals("Underdark");
+
+ if (this.mMeta > 0) {
+ int j = Math.max(1, this.mAmount / 2 + aRandom.nextInt(this.mAmount) / 2);
+ for (int i = 0; i < j; i++) {
+ TileEntityOres.setOreBlock(
+ aWorld,
+ aChunkX + 8 + aRandom.nextInt(16),
+ this.mMinY + aRandom.nextInt(Math.max(1, this.mMaxY - this.mMinY)),
+ aChunkZ + 8 + aRandom.nextInt(16),
+ this.mMeta,
+ true,
+ isUnderdark);
+ count++;
+ }
+ }
+ if (debugSmallOres) {
+ GTLog.out.println(
+ "Small Ore:" + this.mWorldGenName
+ + " @ dim="
+ + aDimensionType
+ + " mX="
+ + aChunkX / 16
+ + " mZ="
+ + aChunkZ / 16
+ + " ore="
+ + count);
+ }
+ return true;
+ }
+}