aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/everglades/gen/WorldGenMinableCustom.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/gtPlusPlus/everglades/gen/WorldGenMinableCustom.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/gtPlusPlus/everglades/gen/WorldGenMinableCustom.java')
-rw-r--r--src/main/java/gtPlusPlus/everglades/gen/WorldGenMinableCustom.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/everglades/gen/WorldGenMinableCustom.java b/src/main/java/gtPlusPlus/everglades/gen/WorldGenMinableCustom.java
new file mode 100644
index 0000000000..0b2062ca88
--- /dev/null
+++ b/src/main/java/gtPlusPlus/everglades/gen/WorldGenMinableCustom.java
@@ -0,0 +1,90 @@
+package gtPlusPlus.everglades.gen;
+
+import static gtPlusPlus.core.lib.GTPPCore.PI;
+
+import java.util.Random;
+
+import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.MathHelper;
+import net.minecraft.world.World;
+import net.minecraft.world.gen.feature.WorldGenMinable;
+
+import gtPlusPlus.api.objects.Logger;
+
+public class WorldGenMinableCustom extends WorldGenMinable {
+
+ /** The block to generate. */
+ private Block oreToGenerate;
+ /** The number of blocks to generate. */
+ private int numberOfBlocks;
+ /** The block to replace. */
+ private Block blockToReplace;
+ /** The meta of the block. */
+ private int mineableBlockMeta;
+
+ public WorldGenMinableCustom(final Block block, final int count) {
+ super(block, count, Blocks.stone);
+ }
+
+ public WorldGenMinableCustom(final Block block, final int count, final Block target) {
+ super(block, count, target);
+ this.oreToGenerate = block;
+ this.numberOfBlocks = count;
+ this.blockToReplace = target;
+ }
+
+ public WorldGenMinableCustom(final Block block, final int meta, final int number, final Block target) {
+ this(block, number, target);
+ this.mineableBlockMeta = meta;
+ }
+
+ @Override
+ public boolean generate(final World world, final Random rand, final int x, final int y, final int z) {
+ final float f = rand.nextFloat() * PI;
+ final double d0 = x + 16 + ((MathHelper.sin(f) * this.numberOfBlocks) / 4.0F);
+ final double d1 = (x + 16) - ((MathHelper.sin(f) * this.numberOfBlocks) / 4.0F);
+ final double d2 = z + 16 + ((MathHelper.cos(f) * this.numberOfBlocks) / 4.0F);
+ final double d3 = (z + 16) - ((MathHelper.cos(f) * this.numberOfBlocks) / 4.0F);
+ final double d4 = (y + rand.nextInt(8)) - 1;
+ final double d5 = (y + rand.nextInt(8)) - 1;
+
+ for (int l = 0; l <= this.numberOfBlocks; ++l) {
+ final double d6 = d0 + (((d1 - d0) * l) / this.numberOfBlocks);
+ final double d7 = d4 + (((d5 - d4) * l) / this.numberOfBlocks);
+ final double d8 = d2 + (((d3 - d2) * l) / this.numberOfBlocks);
+ final double d9 = (rand.nextDouble() * this.numberOfBlocks) / 8.0D;
+ final double d10 = ((MathHelper.sin((l * PI) / this.numberOfBlocks) + 1.0F) * d9) + 1.0D;
+ final double d11 = ((MathHelper.sin((l * PI) / this.numberOfBlocks) + 1.0F) * d9) + 1.0D;
+ final int i1 = MathHelper.floor_double(d6 - (d10 / 2.0D));
+ final int j1 = MathHelper.floor_double(d7 - (d11 / 2.0D));
+ final int k1 = MathHelper.floor_double(d8 - (d10 / 2.0D));
+ final int l1 = MathHelper.floor_double(d6 + (d10 / 2.0D));
+ final int i2 = MathHelper.floor_double(d7 + (d11 / 2.0D));
+ final int j2 = MathHelper.floor_double(d8 + (d10 / 2.0D));
+
+ for (int k2 = i1; k2 <= l1; ++k2) {
+ final double d12 = ((k2 + 0.5D) - d6) / (d10 / 2.0D);
+ if ((d12 * d12) < 1.0D) {
+ for (int l2 = j1; l2 <= i2; ++l2) {
+ final double d13 = ((l2 + 0.5D) - d7) / (d11 / 2.0D);
+ if (((d12 * d12) + (d13 * d13)) < 1.0D) {
+ for (int i3 = k1; i3 <= j2; ++i3) {
+ final double d14 = ((i3 + 0.5D) - d8) / (d10 / 2.0D);
+ if ((((d12 * d12) + (d13 * d13) + (d14 * d14)) < 1.0D) && world.getBlock(k2, l2, i3)
+ .isReplaceableOreGen(world, k2, l2, i3, this.blockToReplace)) {
+ world.setBlock(k2, l2, i3, this.oreToGenerate, this.mineableBlockMeta, 3);
+ Logger.INFO(
+ "Generated a " + this.oreToGenerate
+ .getLocalizedName() + " at x: " + k2 + " | y: " + l2 + " | z: " + i3);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+}