mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 23:28:35 +01:00
mining lens part 2.
This commit is contained in:
parent
7251e3390c
commit
c6f226c2da
6 changed files with 38 additions and 71 deletions
|
@ -47,6 +47,7 @@ public final class ActuallyAdditionsAPI {
|
||||||
public static final List<PressingRecipe> PRESSING_RECIPES = new ArrayList<>();
|
public static final List<PressingRecipe> PRESSING_RECIPES = new ArrayList<>();
|
||||||
public static final List<FermentingRecipe> FERMENTING_RECIPES = new ArrayList<>();
|
public static final List<FermentingRecipe> FERMENTING_RECIPES = new ArrayList<>();
|
||||||
public static final List<LaserRecipe> CONVERSION_LASER_RECIPES = new ArrayList<>();
|
public static final List<LaserRecipe> CONVERSION_LASER_RECIPES = new ArrayList<>();
|
||||||
|
public static final List<MiningLensRecipe> MINING_LENS_RECIPES = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Farmer behaviors are sorted when first accessed, this will not be done until after loading, but do not add behaviors at runtime.
|
* Farmer behaviors are sorted when first accessed, this will not be done until after loading, but do not add behaviors at runtime.
|
||||||
|
@ -59,7 +60,9 @@ public final class ActuallyAdditionsAPI {
|
||||||
public static final List<IBookletChapter> ALL_CHAPTERS = new ArrayList<>();
|
public static final List<IBookletChapter> ALL_CHAPTERS = new ArrayList<>();
|
||||||
//This is added to automatically, you don't need to add anything to this list
|
//This is added to automatically, you don't need to add anything to this list
|
||||||
public static final List<IBookletPage> BOOKLET_PAGES_WITH_ITEM_OR_FLUID_DATA = new ArrayList<>();
|
public static final List<IBookletPage> BOOKLET_PAGES_WITH_ITEM_OR_FLUID_DATA = new ArrayList<>();
|
||||||
|
@Deprecated
|
||||||
public static final List<WeightedOre> STONE_ORES = new ArrayList<>();
|
public static final List<WeightedOre> STONE_ORES = new ArrayList<>();
|
||||||
|
@Deprecated
|
||||||
public static final List<WeightedOre> NETHERRACK_ORES = new ArrayList<>();
|
public static final List<WeightedOre> NETHERRACK_ORES = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,11 +2,7 @@ package de.ellpeck.actuallyadditions.data;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.crafting.FermentingRecipe;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.crafting.MiningLensRecipe;
|
import de.ellpeck.actuallyadditions.mod.crafting.MiningLensRecipe;
|
||||||
import de.ellpeck.actuallyadditions.mod.crafting.PressingRecipe;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.fluids.InitFluids;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ActuallyItems;
|
|
||||||
import net.minecraft.data.DataGenerator;
|
import net.minecraft.data.DataGenerator;
|
||||||
import net.minecraft.data.DirectoryCache;
|
import net.minecraft.data.DirectoryCache;
|
||||||
import net.minecraft.data.IFinishedRecipe;
|
import net.minecraft.data.IFinishedRecipe;
|
||||||
|
@ -17,7 +13,6 @@ import net.minecraft.tags.ITag;
|
||||||
import net.minecraft.util.IItemProvider;
|
import net.minecraft.util.IItemProvider;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.common.Tags;
|
import net.minecraftforge.common.Tags;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
|
@ -24,13 +24,13 @@ public class MiningLensRecipe extends WeightedRandom.Item implements IRecipe<IIn
|
||||||
|
|
||||||
private final ResourceLocation id;
|
private final ResourceLocation id;
|
||||||
private final Ingredient input;
|
private final Ingredient input;
|
||||||
private final int weight;
|
//private final int weight;
|
||||||
private final ItemStack output;
|
private final ItemStack output;
|
||||||
|
|
||||||
public MiningLensRecipe(ResourceLocation id, Ingredient input, int weight, ItemStack output) {
|
public MiningLensRecipe(ResourceLocation id, Ingredient input, int weight, ItemStack output) {
|
||||||
super(weight);
|
super(weight);
|
||||||
this.input = input;
|
this.input = input;
|
||||||
this.weight = weight;
|
//this.weight = weight;
|
||||||
this.output = output;
|
this.output = output;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ public class MiningLensRecipe extends WeightedRandom.Item implements IRecipe<IIn
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getResultItem() {
|
public ItemStack getResultItem() {
|
||||||
return output.copy();
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,18 +16,25 @@ import de.ellpeck.actuallyadditions.api.lens.Lens;
|
||||||
import de.ellpeck.actuallyadditions.api.recipe.WeightedOre;
|
import de.ellpeck.actuallyadditions.api.recipe.WeightedOre;
|
||||||
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
|
import de.ellpeck.actuallyadditions.mod.config.CommonConfig;
|
||||||
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues;
|
import de.ellpeck.actuallyadditions.mod.config.values.ConfigIntValues;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.crafting.MiningLensRecipe;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.NetherrackBlock;
|
import net.minecraft.block.NetherrackBlock;
|
||||||
|
import net.minecraft.item.BlockItem;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.WeightedRandom;
|
import net.minecraft.util.WeightedRandom;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraftforge.common.Tags;
|
import net.minecraftforge.common.Tags;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class LensMining extends Lens {
|
public class LensMining extends Lens {
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
|
||||||
//These need to be moved to datagen conditionals if the appropriate mod is loaded.
|
//These need to be moved to datagen conditionals if the appropriate mod is loaded.
|
||||||
|
@ -77,50 +84,36 @@ public class LensMining extends Lens {
|
||||||
if (tile.getEnergy() >= energyUse) {
|
if (tile.getEnergy() >= energyUse) {
|
||||||
int adaptedUse = energyUse;
|
int adaptedUse = energyUse;
|
||||||
|
|
||||||
List<WeightedOre> ores = null;
|
List<MiningLensRecipe> ores = new ArrayList<>();
|
||||||
|
|
||||||
Block hitBlock = hitState.getBlock();
|
Block hitBlock = hitState.getBlock();
|
||||||
if (hitBlock.is(Tags.Blocks.STONE)) { //TODO maybe?
|
ItemStack item = new ItemStack(hitBlock.asItem());
|
||||||
|
|
||||||
|
for(MiningLensRecipe r:ActuallyAdditionsAPI.MINING_LENS_RECIPES) {
|
||||||
|
if (r.matches(item))
|
||||||
|
ores.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* if (hitBlock.is(Tags.Blocks.STONE)) { //TODO maybe?
|
||||||
ores = ActuallyAdditionsAPI.STONE_ORES;
|
ores = ActuallyAdditionsAPI.STONE_ORES;
|
||||||
} else if (hitBlock instanceof NetherrackBlock) {
|
} else if (hitBlock instanceof NetherrackBlock) {
|
||||||
ores = ActuallyAdditionsAPI.NETHERRACK_ORES;
|
ores = ActuallyAdditionsAPI.NETHERRACK_ORES;
|
||||||
adaptedUse += 10000;
|
adaptedUse += 10000; //TODO uh oh!?
|
||||||
}
|
}*/
|
||||||
|
|
||||||
if (ores != null) {
|
if (!ores.isEmpty()) {
|
||||||
int totalWeight = WeightedRandom.getTotalWeight(ores);
|
int totalWeight = WeightedRandom.getTotalWeight(ores);
|
||||||
ItemStack stack = null;
|
MiningLensRecipe ore = WeightedRandom.getRandomItem(tile.getWorldObject().random, ores);
|
||||||
|
|
||||||
boolean found = false;
|
ItemStack stack = ore.getResultItem().copy();
|
||||||
while (!found) {
|
|
||||||
WeightedOre ore = WeightedRandom.getRandomItem(tile.getWorldObject().random, ores, totalWeight);
|
|
||||||
/* if (ore != null) {
|
|
||||||
List<ItemStack> stacks = OreDictionary.getOres(ore.name, false);
|
|
||||||
if (stacks != null && !stacks.isEmpty()) {
|
|
||||||
for (ItemStack aStack : stacks) {
|
|
||||||
if (StackUtil.isValid(aStack) && !CrusherRecipeRegistry.hasBlacklistedOutput(aStack, ConfigStringListValues.MINING_LENS_BLACKLIST.getValue()) && aStack.getItem() instanceof ItemBlock) {
|
|
||||||
if (ConfigBoolValues.MINING_LENS_ADAPTED_USE.isEnabled()) {
|
|
||||||
adaptedUse += (totalWeight - ore.weight) % 40000;
|
|
||||||
}
|
|
||||||
|
|
||||||
stack = aStack;
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tile.getEnergy() >= adaptedUse) {
|
|
||||||
Block block = Block.byItem(stack.getItem());
|
|
||||||
/* if (block != Blocks.AIR) {
|
|
||||||
BlockState state = block.getStateForPlacement(tile.getWorldObject(), hitPos, Direction.UP, 0, 0, 0, stack.getMetadata(), FakePlayerFactory.getMinecraft((WorldServer) tile.getWorldObject()), Hand.MAIN_HAND);
|
|
||||||
tile.getWorldObject().setBlock(hitPos, state, 2);
|
|
||||||
|
|
||||||
tile.getWorldObject().levelEvent(2001, hitPos, Block.getId(state));
|
|
||||||
|
|
||||||
|
if (stack.getItem() instanceof BlockItem) {
|
||||||
|
Block toPlace = Block.byItem(stack.getItem());
|
||||||
|
BlockState state2Place = toPlace.defaultBlockState();
|
||||||
|
tile.getWorldObject().setBlock(hitPos, state2Place, 2);
|
||||||
|
tile.getWorldObject().levelEvent(2001, hitPos, Block.getId(state2Place));
|
||||||
tile.extractEnergy(adaptedUse);
|
tile.extractEnergy(adaptedUse);
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* This file ("Lenses.java") is part of the Actually Additions mod for Minecraft.
|
|
||||||
* It is created and owned by Ellpeck and distributed
|
|
||||||
* under the Actually Additions License to be found at
|
|
||||||
* http://ellpeck.de/actaddlicense
|
|
||||||
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
|
||||||
*
|
|
||||||
* © 2015-2017 Ellpeck
|
|
||||||
*/
|
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.items.lens;
|
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
|
|
||||||
import de.ellpeck.actuallyadditions.api.lens.LensConversion;
|
|
||||||
|
|
||||||
public final class Lenses {
|
|
||||||
|
|
||||||
public static void init() {
|
|
||||||
// ActuallyAdditionsAPI.lensDefaultConversion = new LensConversion();
|
|
||||||
// ActuallyAdditionsAPI.lensDetonation = new LensDetonation();
|
|
||||||
// ActuallyAdditionsAPI.lensDeath = new LensDeath();
|
|
||||||
// ActuallyAdditionsAPI.lensEvenMoarDeath = new LensKiller();
|
|
||||||
// ActuallyAdditionsAPI.lensColor = new LensColor();
|
|
||||||
// ActuallyAdditionsAPI.lensDisenchanting = new LensDisenchanting();
|
|
||||||
// ActuallyAdditionsAPI.lensMining = new LensMining();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -41,5 +41,8 @@ public class ResourceReloader implements IResourceManagerReloadListener {
|
||||||
|
|
||||||
ActuallyAdditionsAPI.COLOR_CHANGE_RECIPES.clear();
|
ActuallyAdditionsAPI.COLOR_CHANGE_RECIPES.clear();
|
||||||
ActuallyAdditionsAPI.COLOR_CHANGE_RECIPES.addAll(recipeManager.getAllRecipesFor(ActuallyRecipes.Types.COLOR_CHANGE));
|
ActuallyAdditionsAPI.COLOR_CHANGE_RECIPES.addAll(recipeManager.getAllRecipesFor(ActuallyRecipes.Types.COLOR_CHANGE));
|
||||||
|
|
||||||
|
ActuallyAdditionsAPI.MINING_LENS_RECIPES.clear();
|
||||||
|
ActuallyAdditionsAPI.MINING_LENS_RECIPES.addAll(recipeManager.getAllRecipesFor(ActuallyRecipes.Types.MINING_LENS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue