Skip to content

Commit

Permalink
Fix #141, #142
Browse files Browse the repository at this point in the history
  • Loading branch information
NovaMachina committed Mar 31, 2021
1 parent 1803830 commit 590446b
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 50 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,10 @@ jar.finalizedBy('reobfJar')
//publish.dependsOn('reobfJar')

repositories {
maven { url = 'https://files.minecraftforge.net/maven' }
maven { url = "https://dvs1.progwml6.com/files/maven" } // JEI
maven { url = "https://maven.tehnut.info"} // WAILA
maven { url = "https://maven.tterrag.com/" } // TOP
maven { url = 'https://files.minecraftforge.net/maven' }
maven { url = "https://maven.blamejared.com" } // CraftTweaker
maven { url = "https://cursemaven.com"}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -535,12 +535,12 @@ private void registerMeshes(Consumer<IFinishedRecipe> consumer) {
registerMesh(EnumMesh.EMERALD.getRegistryObject().get(), EnumMesh.DIAMOND.getRegistryObject()
.get(), Tags.Items.GEMS_EMERALD, consumer);
SmithingRecipeBuilder
.smithingRecipe(Ingredient.fromItems(EnumMesh.EMERALD.getRegistryObject().get()), Ingredient
.fromTag(Tags.Items.INGOTS_NETHERITE), EnumMesh.NETHERITE.getRegistryObject().get())
.addCriterion("has_emerald_mesh", InventoryChangeTrigger.Instance
.forItems(EnumMesh.EMERALD.getRegistryObject().get()))
.addCriterion(MATERIAL_CONDITION, hasItem(Tags.Items.INGOTS_NETHERITE))
.build(consumer, createSaveLocation(new ResourceLocation(ExNihiloConstants.ModIds.EX_NIHILO_SEQUENTIA, EnumMesh.NETHERITE
.smithing(Ingredient.of(EnumMesh.EMERALD.getRegistryObject().get()), Ingredient
.of(Tags.Items.INGOTS_NETHERITE), EnumMesh.NETHERITE.getRegistryObject().get())
.unlocks("has_emerald_mesh", InventoryChangeTrigger.Instance
.hasItems(EnumMesh.EMERALD.getRegistryObject().get()))
.unlocks(MATERIAL_CONDITION, has(Tags.Items.INGOTS_NETHERITE))
.save(consumer, createSaveLocation(new ResourceLocation(ExNihiloConstants.ModIds.EX_NIHILO_SEQUENTIA, EnumMesh.NETHERITE
.getMeshName())));

ShapedRecipeBuilder.shaped(EnumMesh.STRING.getRegistryObject().get())
Expand Down Expand Up @@ -679,33 +679,33 @@ private void registerMisc(Consumer<IFinishedRecipe> consumer) {
.hasItems(ItemPredicate.Builder.item().of(ExNihiloTags.CLAY).build()))
.save(consumer, createSaveLocation(EnumResource.PORCELAIN_CLAY.getRegistryObject().getId()));

ShapedRecipeBuilder.shapedRecipe(Blocks.GILDED_BLACKSTONE)
.patternLine("xxx")
.patternLine("xgx")
.patternLine("xxx")
.key('x', EnumPebbleType.BLACKSTONE.getRegistryObject().get())
.key('g', EnumOre.GOLD.getChunkItem().get())
.addCriterion("has_gold", InventoryChangeTrigger.Instance
.forItems(EnumOre.GOLD.getChunkItem().get()))
.build(consumer, createSaveLocation(Blocks.GILDED_BLACKSTONE.getRegistryName()));
ShapedRecipeBuilder.shapedRecipe(Blocks.CRYING_OBSIDIAN)
.patternLine(" o ")
.patternLine("obo")
.patternLine(" o ")
.key('b', Items.WATER_BUCKET)
.key('o', Blocks.OBSIDIAN)
.addCriterion("has_obsidian", InventoryChangeTrigger.Instance
.forItems(Blocks.OBSIDIAN))
.build(consumer, createSaveLocation(Blocks.CRYING_OBSIDIAN.getRegistryName()));
ShapedRecipeBuilder.shapedRecipe(Blocks.ANCIENT_DEBRIS)
.patternLine("xxx")
.patternLine("xox")
.patternLine("xxx")
.key('x', Items.NETHERITE_SCRAP)
.key('o', Blocks.OBSIDIAN)
.addCriterion("has_obsidian", InventoryChangeTrigger.Instance
.forItems(Blocks.OBSIDIAN))
.build(consumer, createSaveLocation(Blocks.ANCIENT_DEBRIS.getRegistryName()));
ShapedRecipeBuilder.shaped(Blocks.GILDED_BLACKSTONE)
.pattern("xxx")
.pattern("xgx")
.pattern("xxx")
.define('x', EnumPebbleType.BLACKSTONE.getRegistryObject().get())
.define('g', EnumOre.GOLD.getChunkItem().get())
.unlockedBy("has_gold", InventoryChangeTrigger.Instance
.hasItems(EnumOre.GOLD.getChunkItem().get()))
.save(consumer, createSaveLocation(Blocks.GILDED_BLACKSTONE.getRegistryName()));
ShapedRecipeBuilder.shaped(Blocks.CRYING_OBSIDIAN)
.pattern(" o ")
.pattern("obo")
.pattern(" o ")
.define('b', Items.WATER_BUCKET)
.define('o', Blocks.OBSIDIAN)
.unlockedBy("has_obsidian", InventoryChangeTrigger.Instance
.hasItems(Blocks.OBSIDIAN))
.save(consumer, createSaveLocation(Blocks.CRYING_OBSIDIAN.getRegistryName()));
ShapedRecipeBuilder.shaped(Blocks.ANCIENT_DEBRIS)
.pattern("xxx")
.pattern("xox")
.pattern("xxx")
.define('x', Items.NETHERITE_SCRAP)
.define('o', Blocks.OBSIDIAN)
.unlockedBy("has_obsidian", InventoryChangeTrigger.Instance
.hasItems(Blocks.OBSIDIAN))
.save(consumer, createSaveLocation(Blocks.ANCIENT_DEBRIS.getRegistryName()));
}

private void registerOres(Consumer<IFinishedRecipe> consumer) {
Expand Down Expand Up @@ -787,17 +787,17 @@ private void registerSieveRecipes(Consumer<IFinishedRecipe> consumer) {
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.5F))
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.1F))
.build(consumer, sieveLoc("pebble_granite"));
SieveRecipeBuilder.builder().input(Ingredient.fromItems(Blocks.DIRT))
SieveRecipeBuilder.builder().input(Ingredient.of(Blocks.DIRT))
.addResult(EnumPebbleType.BASALT.getRegistryObject().get())
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.5F))
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.1F))
.build(consumer, sieveLoc("pebble_basalt"));
SieveRecipeBuilder.builder().input(Ingredient.fromItems(Blocks.DIRT))
SieveRecipeBuilder.builder().input(Ingredient.of(Blocks.DIRT))
.addResult(EnumPebbleType.BLACKSTONE.getRegistryObject().get())
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.5F))
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.1F))
.build(consumer, sieveLoc("pebble_blackstone"));
SieveRecipeBuilder.builder().input(Ingredient.fromItems(Blocks.DIRT))
SieveRecipeBuilder.builder().input(Ingredient.of(Blocks.DIRT))
.addResult(Items.WHEAT_SEEDS)
.addRoll(new MeshWithChance(EnumMesh.STRING, 0.7F))
.build(consumer, sieveLoc("seed_wheat"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public static void initialize() {
logger.debug("Adding barrel modes");
addMode(() -> new EmptyBarrelMode(ExNihiloConstants.BarrelModes.EMPTY), TriggerType.NONE);
addMode(() -> new CompostBarrelMode(ExNihiloConstants.BarrelModes.COMPOST), TriggerType.ITEM);
addMode(() -> new FluidsBarrelMode(ExNihiloConstants.BarrelModes.FLUID), TriggerType.FLUID);
addMode(() -> new FluidsBarrelMode(ExNihiloConstants.BarrelModes.FLUID), TriggerType.ITEM);
addMode(() -> new BlockBarrelMode(ExNihiloConstants.BarrelModes.BLOCK), TriggerType.NONE);
addMode(() -> new MobSpawnBarrelMode(ExNihiloConstants.BarrelModes.MOB), TriggerType.NONE);
addMode(() -> new FluidTransformBarrelMode(ExNihiloConstants.BarrelModes.TRANSFORM), TriggerType.NONE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,6 @@ public void tick(AbstractBarrelTile barrelTile) {
@Override
public ActionResultType onBlockActivated(AbstractBarrelTile barrelTile, PlayerEntity player, Hand handIn, IFluidHandler fluidHandler, IItemHandler itemHandler) {
if (!player.getItemInHand(handIn).isEmpty()) {
boolean result = FluidUtil.interactWithFluidHandler(player, handIn, fluidHandler);

if (result) {
barrelTile.getLevel()
.sendBlockUpdated(barrelTile.getBlockPos(), barrelTile.getBlockState(), barrelTile.getBlockState(), 2);
barrelTile.setChanged();
return ActionResultType.SUCCESS;
}

ItemStack stack = player.getItemInHand(handIn);
List<Supplier<AbstractBarrelMode>> modes = BarrelModeRegistry.getModes(BarrelModeRegistry.TriggerType.ITEM);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import net.minecraft.fluid.Fluids;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.potion.PotionUtils;
import net.minecraft.potion.Potions;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
import net.minecraft.util.IItemProvider;
Expand Down Expand Up @@ -104,6 +107,9 @@ public ActionResultType onBlockActivated(AbstractBarrelTile barrelTile, PlayerEn
if(TankUtil.drainWaterIntoBottle(barrelTile, player, fluidHandler)) {
return ActionResultType.SUCCESS;
}
if(TankUtil.drainWaterFromBottle(barrelTile, player, fluidHandler)) {
return ActionResultType.SUCCESS;
}

boolean result = FluidUtil.interactWithFluidHandler(player, handIn, fluidHandler);

Expand Down Expand Up @@ -162,7 +168,7 @@ public boolean isEmptyMode() {

@Override
protected boolean isTriggerItem(ItemStack stack) {
return false;
return ItemStack.isSame(stack, new ItemStack(Items.WATER_BUCKET)) || ItemStack.isSame(stack, PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ public ActionResultType onBlockActivated(PlayerEntity player, Hand handIn,
return ActionResultType.SUCCESS;
}

if(TankUtil.drainWaterFromBottle(this, player, handler)) {
return ActionResultType.SUCCESS;
}

boolean result = FluidUtil.interactWithFluidHandler(player, handIn, handler);

if (result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import net.minecraft.potion.PotionUtils;
import net.minecraft.potion.Potions;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;

Expand All @@ -17,14 +18,19 @@ public class TankUtil {
WATER_BOTTLE = PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER);
}

// TODO: Figure out how to completely fill and drain
public static boolean drainWaterIntoBottle(TileEntity tileEntity, PlayerEntity player, IFluidHandler tank) {
int waterAmount = 333;
if(tank.getFluidInTank(0).getAmount() % FluidAttributes.BUCKET_VOLUME == 334) {
waterAmount = 334;
}
if (player.getMainHandItem().getItem() == Items.GLASS_BOTTLE) {
if(tank.getFluidInTank(0).getFluid() != null && tank.getFluidInTank(0).getAmount() >= 250 && tank.getFluidInTank(0).getFluid().getFluid() == Fluids.WATER) {
if(tank.getFluidInTank(0).getFluid() != null && tank.getFluidInTank(0).getAmount() >= waterAmount && tank.getFluidInTank(0).getFluid().getFluid() == Fluids.WATER) {
if(player.addItem(WATER_BOTTLE.copy())){
if(!player.isCreative()) {
player.getMainHandItem().shrink(1);
}
tank.drain(250, IFluidHandler.FluidAction.EXECUTE);
tank.drain(waterAmount, IFluidHandler.FluidAction.EXECUTE);
tileEntity.setChanged();
return true;
}
Expand All @@ -34,8 +40,12 @@ public static boolean drainWaterIntoBottle(TileEntity tileEntity, PlayerEntity p
}

public static boolean drainWaterFromBottle(TileEntity tileEntity, PlayerEntity player, IFluidHandler tank) {
int waterAmount = 333;
if(tank.getFluidInTank(0).getAmount() % FluidAttributes.BUCKET_VOLUME == 666) {
waterAmount = 334;
}
if (player.getMainHandItem().getItem() == Items.POTION && WATER_BOTTLE.getTag().equals(player.getMainHandItem().getTag())) {
FluidStack water = new FluidStack(Fluids.WATER, 250);
FluidStack water = new FluidStack(Fluids.WATER, waterAmount);

if (tank.fill(water, IFluidHandler.FluidAction.SIMULATE) == water.getAmount()) {
if (player.addItem(new ItemStack(Items.GLASS_BOTTLE))) {
Expand Down

0 comments on commit 590446b

Please sign in to comment.