Merge pull request #2760 from Ayutac/1.18-Ayutac-38

Added XP for ores, fixes #2759
This commit is contained in:
modmuss50 2022-01-20 19:56:23 +00:00 committed by GitHub
commit e3e5414cee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 7 deletions

View file

@ -32,6 +32,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.math.intprovider.UniformIntProvider;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import reborncore.api.blockentity.IUpgrade; import reborncore.api.blockentity.IUpgrade;
import reborncore.common.fluid.FluidValue; import reborncore.common.fluid.FluidValue;
@ -428,20 +429,25 @@ public class TRContent {
public final Block block; public final Block block;
public final OreDistribution distribution; public final OreDistribution distribution;
Ores(OreDistribution distribution) { Ores(OreDistribution distribution, UniformIntProvider experienceDroppedFallback) {
name = this.toString().toLowerCase(Locale.ROOT); name = this.toString().toLowerCase(Locale.ROOT);
block = new OreBlock(FabricBlockSettings.of(Material.STONE) block = new OreBlock(FabricBlockSettings.of(Material.STONE)
.requiresTool() .requiresTool()
.sounds(name.startsWith("deepslate") ? BlockSoundGroup.DEEPSLATE : BlockSoundGroup.STONE) .sounds(name.startsWith("deepslate") ? BlockSoundGroup.DEEPSLATE : BlockSoundGroup.STONE)
.strength(2f, 2f) .strength(2f, 2f),
distribution != null ? distribution.experienceDropped : experienceDroppedFallback
); );
InitUtils.setup(block, name + "_ore"); InitUtils.setup(block, name + "_ore");
this.distribution = distribution; this.distribution = distribution;
} }
Ores(OreDistribution distribution) {
this(distribution, null);
}
Ores(TRContent.Ores stoneOre) { Ores(TRContent.Ores stoneOre) {
this((OreDistribution) null); this(null, stoneOre.distribution != null ? stoneOre.distribution.experienceDropped : null);
deepslateMap.put(stoneOre, this); deepslateMap.put(stoneOre, this);
unDeepslateMap.put(this, stoneOre); unDeepslateMap.put(this, stoneOre);
} }

View file

@ -24,7 +24,11 @@
package techreborn.world; package techreborn.world;
import net.minecraft.util.math.intprovider.UniformIntProvider;
import net.minecraft.world.gen.YOffset; import net.minecraft.world.gen.YOffset;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public enum OreDistribution { public enum OreDistribution {
BAUXITE(6, 12, YOffset.aboveBottom(0), 20, TargetDimension.OVERWORLD), BAUXITE(6, 12, YOffset.aboveBottom(0), 20, TargetDimension.OVERWORLD),
@ -32,10 +36,10 @@ public enum OreDistribution {
GALENA(8, 12, YOffset.aboveBottom(25), 40, TargetDimension.OVERWORLD), GALENA(8, 12, YOffset.aboveBottom(25), 40, TargetDimension.OVERWORLD),
IRIDIUM(3, 4, YOffset.aboveBottom(0), 0, TargetDimension.OVERWORLD), IRIDIUM(3, 4, YOffset.aboveBottom(0), 0, TargetDimension.OVERWORLD),
LEAD(6, 16, YOffset.aboveBottom(40), 40, TargetDimension.OVERWORLD), LEAD(6, 16, YOffset.aboveBottom(40), 40, TargetDimension.OVERWORLD),
PERIDOT(6, 6, YOffset.aboveBottom(0), 360, TargetDimension.END), PERIDOT(6, 6, YOffset.aboveBottom(0), 360, TargetDimension.END, UniformIntProvider.create(2,6)),
PYRITE(6, 6, YOffset.aboveBottom(0), 128, TargetDimension.NETHER), PYRITE(6, 6, YOffset.aboveBottom(0), 128, TargetDimension.NETHER),
RUBY(6, 8, YOffset.fixed(20), 120, TargetDimension.OVERWORLD), RUBY(6, 8, YOffset.fixed(20), 120, TargetDimension.OVERWORLD, UniformIntProvider.create(2,6)),
SAPPHIRE(6, 7, YOffset.fixed(20), 120, TargetDimension.OVERWORLD), SAPPHIRE(6, 7, YOffset.fixed(20), 120, TargetDimension.OVERWORLD, UniformIntProvider.create(2,6)),
SHELDONITE(6, 4, YOffset.aboveBottom(0), 360, TargetDimension.END), SHELDONITE(6, 4, YOffset.aboveBottom(0), 360, TargetDimension.END),
SILVER(6, 16, YOffset.aboveBottom(40), 60,TargetDimension.OVERWORLD), SILVER(6, 16, YOffset.aboveBottom(40), 60,TargetDimension.OVERWORLD),
SODALITE(6, 4, YOffset.aboveBottom(0), 360, TargetDimension.END), SODALITE(6, 4, YOffset.aboveBottom(0), 360, TargetDimension.END),
@ -47,13 +51,19 @@ public enum OreDistribution {
public final int veinsPerChunk; public final int veinsPerChunk;
public final YOffset minOffset; public final YOffset minOffset;
public final int maxY; // Max height of ore in numbers of blocks from the bottom of the world public final int maxY; // Max height of ore in numbers of blocks from the bottom of the world
public @NotNull final UniformIntProvider experienceDropped;
public final TargetDimension dimension; public final TargetDimension dimension;
OreDistribution(int veinSize, int veinsPerChunk, YOffset minOffset, int maxY, TargetDimension dimension) { OreDistribution(int veinSize, int veinsPerChunk, YOffset minOffset, int maxY, TargetDimension dimension, UniformIntProvider experienceDropped) {
this.veinSize = veinSize; this.veinSize = veinSize;
this.veinsPerChunk = veinsPerChunk; this.veinsPerChunk = veinsPerChunk;
this.minOffset = minOffset; this.minOffset = minOffset;
this.maxY = maxY; this.maxY = maxY;
this.experienceDropped = Objects.requireNonNullElse(experienceDropped, UniformIntProvider.create(0,0));
this.dimension = dimension; this.dimension = dimension;
} }
OreDistribution(int veinSize, int veinsPerChunk, YOffset minOffset, int maxY, TargetDimension dimension) {
this(veinSize, veinsPerChunk, minOffset, maxY, dimension, null);
}
} }