diff --git a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java index 891898618a..756f0fe209 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/fluid/MidnightSolutionFluidBlock.java @@ -113,18 +113,22 @@ private static void disenchantItemAndSpawnXP(World world, ItemEntity itemEntity) if (!enchantments.isEmpty()) { int randomEnchantmentIndex = world.random.nextInt(enchantments.size()); Enchantment enchantmentToRemove = (Enchantment) enchantments.keySet().toArray()[randomEnchantmentIndex]; + Pair result = SpectrumEnchantmentHelper.removeEnchantments(itemStack, enchantmentToRemove); + + if(result.getRight() > 0) { + int experience = EnchanterBlockEntity.getEnchantingPrice(itemStack, enchantmentToRemove, enchantments.get(enchantmentToRemove)); + experience /= EXPERIENCE_DISENCHANT_RETURN_DIV; + if (experience > 0) { + ExperienceOrbEntity experienceOrbEntity = new ExperienceOrbEntity(world, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), experience); + world.spawnEntity(experienceOrbEntity); + } - int experience = EnchanterBlockEntity.getEnchantingPrice(itemStack, enchantmentToRemove, enchantments.get(enchantmentToRemove)); - experience /= EXPERIENCE_DISENCHANT_RETURN_DIV; + world.playSound(null, itemEntity.getBlockPos(), SoundEvents.BLOCK_GRINDSTONE_USE, SoundCategory.NEUTRAL, 1.0F, 0.9F + world.getRandom().nextFloat() * 0.2F); + SpectrumS2CPacketSender.playParticleWithRandomOffsetAndVelocity((ServerWorld) world, itemEntity.getPos(), SpectrumParticleTypes.GRAY_SPARKLE_RISING, 10, Vec3d.ZERO, new Vec3d(0.2, 0.4, 0.2)); - if (experience > 0) { - ExperienceOrbEntity experienceOrbEntity = new ExperienceOrbEntity(world, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), experience); - world.spawnEntity(experienceOrbEntity); + itemEntity.setStack(result.getLeft()); + itemEntity.setToDefaultPickupDelay(); } - world.playSound(null, itemEntity.getBlockPos(), SoundEvents.BLOCK_GRINDSTONE_USE, SoundCategory.NEUTRAL, 1.0F, 0.9F + world.getRandom().nextFloat() * 0.2F); - SpectrumS2CPacketSender.playParticleWithRandomOffsetAndVelocity((ServerWorld) world, itemEntity.getPos(), SpectrumParticleTypes.GRAY_SPARKLE_RISING, 10, Vec3d.ZERO, new Vec3d(0.2, 0.4, 0.2)); - itemEntity.setStack(SpectrumEnchantmentHelper.removeEnchantment(itemStack, enchantmentToRemove).getLeft()); - itemEntity.setToDefaultPickupDelay(); } } diff --git a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelTransmissionLogic.java b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelTransmissionLogic.java index 12643fec2e..fa9e55b42a 100644 --- a/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelTransmissionLogic.java +++ b/src/main/java/de/dafuqs/spectrum/blocks/pastel_network/network/PastelTransmissionLogic.java @@ -13,6 +13,7 @@ import org.jgrapht.graph.*; import java.util.*; +import java.util.function.*; public class PastelTransmissionLogic { @@ -103,6 +104,8 @@ private void tryTransferToType(PastelNodeBlockEntity sourceNode, Storage sourceStorage, PastelNodeBlockEntity destinationNode, Storage destinationStorage, TransferMode transferMode) { + Predicate filter = sourceNode.getTransferFilterTo(destinationNode); + try (Transaction transaction = Transaction.openOuter()) { for (StorageView view : sourceStorage) { if (view.isResourceBlank()) { @@ -110,9 +113,10 @@ private boolean transferBetween(PastelNodeBlockEntity sourceNode, Storage { - private static final Identifier BACKGROUND_TEXTURE = SpectrumCommon.locate("textures/gui/patchouli/dragonrot_still.png"); + private static final Identifier BACKGROUND_TEXTURE = SpectrumCommon.locate("textures/gui/patchouli/dragonrot.png"); public PageDragonrotConverting() { super(SpectrumRecipeTypes.DRAGONROT_CONVERTING); diff --git a/src/main/java/de/dafuqs/spectrum/compat/patchouli/pages/PageMudConverting.java b/src/main/java/de/dafuqs/spectrum/compat/patchouli/pages/PageMudConverting.java new file mode 100644 index 0000000000..8278540f49 --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/compat/patchouli/pages/PageMudConverting.java @@ -0,0 +1,21 @@ +package de.dafuqs.spectrum.compat.patchouli.pages; + +import de.dafuqs.spectrum.*; +import de.dafuqs.spectrum.recipe.*; +import de.dafuqs.spectrum.recipe.fluid_converting.*; +import net.minecraft.util.*; + +public class PageMudConverting extends PageFluidConverting { + + private static final Identifier BACKGROUND_TEXTURE = SpectrumCommon.locate("textures/gui/patchouli/mud.png"); + + public PageMudConverting() { + super(SpectrumRecipeTypes.MUD_CONVERTING); + } + + @Override + public Identifier getBackgroundTexture() { + return BACKGROUND_TEXTURE; + } + +} \ No newline at end of file diff --git a/src/main/java/de/dafuqs/spectrum/explosion/ExplosionModifiers.java b/src/main/java/de/dafuqs/spectrum/explosion/ExplosionModifiers.java index ca4faccd24..ae40e2bafa 100644 --- a/src/main/java/de/dafuqs/spectrum/explosion/ExplosionModifiers.java +++ b/src/main/java/de/dafuqs/spectrum/explosion/ExplosionModifiers.java @@ -17,38 +17,35 @@ public class ExplosionModifiers { // MODIFIER TYPES // A Modifier Type defines an abstract set of modifiers that can be used a set number of times - public static final ExplosionModifierType GENERIC = registerModifierType("generic", new ExplosionModifierType(ExplosionArchetype.DAMAGE_ENTITIES, Integer.MAX_VALUE)); + public static final ExplosionModifierType GENERIC = registerModifierType("generic", new ExplosionModifierType(ExplosionArchetype.ALL, Integer.MAX_VALUE)); // general improvements, particles and other cosmetic effects - public static final ExplosionModifierType DAMAGE_SOURCE = registerModifierType("damage_source", new ExplosionModifierType(ExplosionArchetype.DAMAGE_ENTITIES, 1)); // changes the damage source + public static final ExplosionModifierType DAMAGE_TYPE = registerModifierType("damage_type", new ExplosionModifierType(ExplosionArchetype.DAMAGE_ENTITIES, 1)); // changes the damage source public static final ExplosionModifierType DAMAGE_MODIFICATION = registerModifierType("damage_modification", new ExplosionModifierType(ExplosionArchetype.DAMAGE_ENTITIES, Integer.MAX_VALUE)); // changes the damage source public static final ExplosionModifierType DESTRUCTION_SHAPE = registerModifierType("destruction_shape", new ExplosionModifierType(ExplosionArchetype.DESTROY_BLOCKS, 1)); // explosion shape public static final ExplosionModifierType DESTRUCTION_MODIFICATION = registerModifierType("destruction_modification", new ExplosionModifierType(ExplosionArchetype.DESTROY_BLOCKS, Integer.MAX_VALUE)); // all sorts of stuff, like damage improvements - public static final ExplosionModifierType COSMETIC = registerModifierType("cosmetic", new ExplosionModifierType(ExplosionArchetype.COSMETIC, Integer.MAX_VALUE)); // adds particles or other cosmetic effects - - // MODIFIERS // A modifier changes the effect of the modular explosion in some way // General boosts public static final ExplosionModifier EXPLOSION_BOOST = registerModifier("explosion_boost", new MoreBoomModifier(GENERIC, 0xffbf40)); // Damage source changers - public static final ExplosionModifier FIRE = registerModifier("fire", new FireModifier(DAMAGE_SOURCE, DamageSource.IN_FIRE, ParticleTypes.FLAME, 0xaff3eb)); - public static final ExplosionModifier PRIMORDIAL_FIRE = registerModifier("primordial_fire", new PrimordialFireModifier(DAMAGE_SOURCE, SpectrumDamageSources.PRIMORDIAL_FIRE, SpectrumParticleTypes.PRIMORDIAL_FLAME_SMALL, 0x76254d)); - public static final ExplosionModifier LIGHTNING = registerModifier("lightning_damage", new DamageChangingModifier(DAMAGE_SOURCE, DamageSource.LIGHTNING_BOLT, SpectrumParticleTypes.WHITE_EXPLOSION, 0xf0f24d) { + public static final ExplosionModifier FIRE = registerModifier("fire", new FireModifier(DAMAGE_TYPE, DamageSource.IN_FIRE, ParticleTypes.FLAME, 0xaff3eb)); + public static final ExplosionModifier PRIMORDIAL_FIRE = registerModifier("primordial_fire", new PrimordialFireModifier(DAMAGE_TYPE, SpectrumDamageSources.PRIMORDIAL_FIRE, SpectrumParticleTypes.PRIMORDIAL_FLAME_SMALL, 0x76254d)); + public static final ExplosionModifier LIGHTNING = registerModifier("lightning_damage", new DamageChangingModifier(DAMAGE_TYPE, DamageSource.LIGHTNING_BOLT, SpectrumParticleTypes.WHITE_EXPLOSION, 0xf0f24d) { @Override public Optional getDamageSource(@Nullable Entity owner) { return Optional.of(DamageSource.LIGHTNING_BOLT); } }); - public static final ExplosionModifier MAGIC = registerModifier("magic_damage", new DamageChangingModifier(DAMAGE_SOURCE, DamageSource.MAGIC, SpectrumParticleTypes.PURPLE_CRAFTING, 0x5433a5) { + public static final ExplosionModifier MAGIC = registerModifier("magic_damage", new DamageChangingModifier(DAMAGE_TYPE, DamageSource.MAGIC, SpectrumParticleTypes.PURPLE_CRAFTING, 0x5433a5) { @Override public Optional getDamageSource(@Nullable Entity owner) { return Optional.of(DamageSource.magic(owner, owner)); } }); - public static final ExplosionModifier INCANDESCENCE = registerModifier("incandescence", new DamageChangingModifier(DAMAGE_SOURCE, SpectrumDamageSources.INCANDESCENCE, ParticleTypes.ENCHANT, 0xff59ff) { + public static final ExplosionModifier INCANDESCENCE = registerModifier("incandescence", new DamageChangingModifier(DAMAGE_TYPE, SpectrumDamageSources.INCANDESCENCE, ParticleTypes.ENCHANT, 0xff59ff) { @Override public Optional getDamageSource(@Nullable Entity owner) { return Optional.of(SpectrumDamageSources.incandescence(owner)); @@ -73,8 +70,8 @@ public Optional getShape() { public static final ExplosionModifier INVENTORY_INSERTION = registerModifier("inventory_insertion", new EnchantmentAddingModifier(DESTRUCTION_MODIFICATION, SpectrumEnchantments.INVENTORY_INSERTION, 1, ParticleTypes.ENCHANT, 0x5433a5)); // Cosmetic - public static final ExplosionModifier STARRY = registerModifier("starry", new ParticleAddingModifier(COSMETIC, ParticleTypes.END_ROD, 0xc3c8d4)); - public static final ExplosionModifier LIGHT = registerModifier("light", new LightPlacingModifier(COSMETIC, SpectrumParticleTypes.SHIMMERSTONE_SPARKLE, 0xfaf87a)); + public static final ExplosionModifier STARRY = registerModifier("starry", new ParticleAddingModifier(GENERIC, ParticleTypes.END_ROD, 0xc3c8d4)); + public static final ExplosionModifier LIGHT = registerModifier("light", new LightPlacingModifier(GENERIC, SpectrumParticleTypes.SHIMMERSTONE_SPARKLE, 0xfaf87a)); private static T registerModifier(String name, T modifier) { diff --git a/src/main/java/de/dafuqs/spectrum/helpers/SpectrumEnchantmentHelper.java b/src/main/java/de/dafuqs/spectrum/helpers/SpectrumEnchantmentHelper.java index fc403c16bb..57a0c252a3 100644 --- a/src/main/java/de/dafuqs/spectrum/helpers/SpectrumEnchantmentHelper.java +++ b/src/main/java/de/dafuqs/spectrum/helpers/SpectrumEnchantmentHelper.java @@ -177,45 +177,38 @@ public static boolean canCombineAny(Map existingEnchantmen /** * Removes the enchantments on a stack of items / enchanted book - * * @param itemStack the stack * @param enchantments the enchantments to remove - * @return if >0 enchantments could be removed - */ - public static Pair removeEnchantments(@NotNull ItemStack itemStack, Enchantment... enchantments) { - boolean anySuccess = false; - for (Enchantment enchantment : enchantments) { - Pair result = removeEnchantment(itemStack, enchantment); - anySuccess = result.getRight(); - itemStack = result.getLeft(); - } - return new Pair<>(itemStack, anySuccess); - } - - /** - * @return The resulting stack & a boolean to specify if removing was successful + * @return The resulting stack & the count of enchants that were removed */ - public static Pair removeEnchantment(@NotNull ItemStack itemStack, Enchantment enchantment) { + public static Pair removeEnchantments(@NotNull ItemStack itemStack, Enchantment... enchantments) { NbtCompound compound = itemStack.getNbt(); if (compound == null) { - return new Pair<>(itemStack, false); + return new Pair<>(itemStack, 0); } - + NbtList enchantmentList; if (itemStack.isOf(Items.ENCHANTED_BOOK)) { enchantmentList = compound.getList(EnchantedBookItem.STORED_ENCHANTMENTS_KEY, 10); } else { enchantmentList = compound.getList(ItemStack.ENCHANTMENTS_KEY, 10); } - - Identifier enchantmentIdentifier = Registry.ENCHANTMENT.getId(enchantment); - boolean success = false; + + List enchantIDs = new ArrayList<>(); + for(Enchantment enchantment : enchantments) { + enchantIDs.add(Registry.ENCHANTMENT.getId(enchantment)); + } + + int removals = 0; for (int i = 0; i < enchantmentList.size(); i++) { NbtCompound currentCompound = enchantmentList.getCompound(i); - if (currentCompound.contains("id", NbtElement.STRING_TYPE) && Objects.equals(Identifier.tryParse(currentCompound.getString("id")), enchantmentIdentifier)) { - enchantmentList.remove(i); - success = true; - break; + if (currentCompound.contains("id", NbtElement.STRING_TYPE)) { + Identifier currentID = new Identifier(currentCompound.getString("id")); + if(enchantIDs.contains(currentID)) { + enchantmentList.remove(i); + removals++; + break; + } } } @@ -223,15 +216,15 @@ public static Pair removeEnchantment(@NotNull ItemStack item if(enchantmentList.isEmpty()) { ItemStack newStack = new ItemStack(Items.BOOK); newStack.setCount(itemStack.getCount()); - return new Pair<>(newStack, true); + return new Pair<>(newStack, removals); } compound.put(EnchantedBookItem.STORED_ENCHANTMENTS_KEY, enchantmentList); } else { compound.put(ItemStack.ENCHANTMENTS_KEY, enchantmentList); } itemStack.setNbt(compound); - - return new Pair<>(itemStack, success); + + return new Pair<>(itemStack, removals); } public static ItemStack getMaxEnchantedStack(@NotNull T item) { diff --git a/src/main/java/de/dafuqs/spectrum/items/MysteriousCompassItem.java b/src/main/java/de/dafuqs/spectrum/items/MysteriousCompassItem.java new file mode 100644 index 0000000000..cc685ce40c --- /dev/null +++ b/src/main/java/de/dafuqs/spectrum/items/MysteriousCompassItem.java @@ -0,0 +1,31 @@ +package de.dafuqs.spectrum.items; + +import de.dafuqs.revelationary.api.advancements.*; +import de.dafuqs.spectrum.*; +import de.dafuqs.spectrum.registries.*; +import net.minecraft.entity.*; +import net.minecraft.entity.player.*; +import net.minecraft.item.*; +import net.minecraft.util.*; +import net.minecraft.world.*; +import org.jetbrains.annotations.*; + +public class MysteriousCompassItem extends StructureCompassItem { + + private static final Identifier REQUIRED_ADVANCEMENT = SpectrumCommon.locate("unlocks/mysterious_locket_socketing"); + + public MysteriousCompassItem(Settings settings) { + super(settings, SpectrumStructureTags.MYSTERIOUS_COMPASS_LOCATED); + } + + @Override + public void inventoryTick(@NotNull ItemStack stack, @NotNull World world, Entity entity, int slot, boolean selected) { + if (!world.isClient && world.getTime() % 200 == 0 && entity instanceof PlayerEntity player) + if(AdvancementHelper.hasAdvancement(player, REQUIRED_ADVANCEMENT)) { + locateStructure(stack, world, entity); + } else { + removeStructurePos(stack); + } + } + +} diff --git a/src/main/java/de/dafuqs/spectrum/items/StructureCompassItem.java b/src/main/java/de/dafuqs/spectrum/items/StructureCompassItem.java index aebdd4a4f4..64ff2dac1c 100644 --- a/src/main/java/de/dafuqs/spectrum/items/StructureCompassItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/StructureCompassItem.java @@ -25,18 +25,20 @@ public StructureCompassItem(Settings settings, TagKey locatedStructur @Override public void inventoryTick(@NotNull ItemStack stack, @NotNull World world, Entity entity, int slot, boolean selected) { - if (!world.isClient) { - if (world.getTime() % 200 == 0) { - Pair> foundStructure = locateStructure((ServerWorld) world, entity.getBlockPos()); - if (foundStructure != null) { - saveStructurePos(stack, world.getRegistryKey(), foundStructure.getFirst()); - } else { - removeStructurePos(stack); - } - } + if (!world.isClient && world.getTime() % 200 == 0) { + locateStructure(stack, world, entity); } } - + + protected void locateStructure(@NotNull ItemStack stack, @NotNull World world, Entity entity) { + Pair> foundStructure = locateStructure((ServerWorld) world, entity.getBlockPos()); + if (foundStructure != null) { + saveStructurePos(stack, world.getRegistryKey(), foundStructure.getFirst()); + } else { + removeStructurePos(stack); + } + } + public @Nullable Pair> locateStructure(@NotNull ServerWorld world, @NotNull BlockPos pos) { Registry registry = world.getRegistryManager().get(Registry.STRUCTURE_KEY); Optional> registryEntryList = registry.getEntryList(this.locatedStructures); diff --git a/src/main/java/de/dafuqs/spectrum/items/tools/FerociousBidentItem.java b/src/main/java/de/dafuqs/spectrum/items/tools/FerociousBidentItem.java index b9d6878bd8..21fbad36b0 100644 --- a/src/main/java/de/dafuqs/spectrum/items/tools/FerociousBidentItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/tools/FerociousBidentItem.java @@ -3,6 +3,7 @@ import de.dafuqs.spectrum.energy.*; import de.dafuqs.spectrum.energy.color.*; import net.minecraft.client.item.*; +import net.minecraft.enchantment.*; import net.minecraft.entity.*; import net.minecraft.entity.damage.*; import net.minecraft.entity.player.*; @@ -25,10 +26,10 @@ public FerociousBidentItem(Settings settings, double damage) { } @Override - public int getBuiltinRiptideLevel() { - return BUILTIN_RIPTIDE_LEVEL; + public int getRiptideLevel(ItemStack stack) { + return Math.max(EnchantmentHelper.getRiptide(stack), BUILTIN_RIPTIDE_LEVEL); } - + @Override public boolean canStartRiptide(PlayerEntity player, ItemStack stack) { return super.canStartRiptide(player, stack) || InkPowered.tryDrainEnergy(player, RIPTIDE_COST); diff --git a/src/main/java/de/dafuqs/spectrum/items/tools/MalachiteBidentItem.java b/src/main/java/de/dafuqs/spectrum/items/tools/MalachiteBidentItem.java index 67392ee4c7..17764a3eb5 100644 --- a/src/main/java/de/dafuqs/spectrum/items/tools/MalachiteBidentItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/tools/MalachiteBidentItem.java @@ -62,15 +62,9 @@ public TypedActionResult use(World world, PlayerEntity user, Hand han ItemStack handStack = user.getStackInHand(hand); if (handStack.getDamage() >= handStack.getMaxDamage() - 1) { return TypedActionResult.fail(handStack); - } else if (!canStartRiptide(user, handStack)) { - user.setCurrentHand(hand); - return TypedActionResult.consume(handStack); - } else if (EnchantmentHelper.getRiptide(handStack) > 0 && !user.isTouchingWaterOrRain()) { - return TypedActionResult.fail(handStack); - } else { - user.setCurrentHand(hand); - return TypedActionResult.consume(handStack); } + user.setCurrentHand(hand); + return TypedActionResult.consume(handStack); } @Override @@ -79,10 +73,9 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int int useTime = this.getMaxUseTime(stack) - remainingUseTicks; if (useTime >= 10) { player.incrementStat(Stats.USED.getOrCreateStat(this)); - - int riptideLevel = getRiptideLevel(stack); - if (riptideLevel > 0 && canStartRiptide(player, stack)) { - riptide(world, player, riptideLevel); + + if (canStartRiptide(player, stack)) { + riptide(world, player, getRiptideLevel(stack)); } else if (!world.isClient) { stack.damage(1, player, (p) -> p.sendToolBreakStatus(user.getActiveHand())); throwBident(stack, (ServerWorld) world, player); @@ -92,7 +85,7 @@ public void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int } public int getRiptideLevel(ItemStack stack) { - return Math.max(EnchantmentHelper.getRiptide(stack), getBuiltinRiptideLevel()); + return EnchantmentHelper.getRiptide(stack); } protected void riptide(World world, PlayerEntity playerEntity, int riptideLevel) { @@ -160,12 +153,8 @@ public float getThrowSpeed() { return 2.5F; } - public int getBuiltinRiptideLevel() { - return 0; - } - public boolean canStartRiptide(PlayerEntity player, ItemStack stack) { - return player.isTouchingWaterOrRain(); + return getRiptideLevel(stack) > 0 && player.isTouchingWaterOrRain(); } public boolean isThrownAsMirrorImage(ItemStack stack, ServerWorld world, PlayerEntity player) { diff --git a/src/main/java/de/dafuqs/spectrum/items/tools/WorkstaffItem.java b/src/main/java/de/dafuqs/spectrum/items/tools/WorkstaffItem.java index 29b2cd9708..fde2052daa 100644 --- a/src/main/java/de/dafuqs/spectrum/items/tools/WorkstaffItem.java +++ b/src/main/java/de/dafuqs/spectrum/items/tools/WorkstaffItem.java @@ -193,7 +193,7 @@ private static void enchantAndRemoveOthers(PlayerEntity player, ItemStack stack, } } - if (SpectrumEnchantmentHelper.removeEnchantments(stack, Enchantments.SILK_TOUCH, SpectrumEnchantments.RESONANCE, Enchantments.FORTUNE).getRight()) { + if (SpectrumEnchantmentHelper.removeEnchantments(stack, Enchantments.SILK_TOUCH, SpectrumEnchantments.RESONANCE, Enchantments.FORTUNE).getRight() > 0) { SpectrumEnchantmentHelper.addOrExchangeEnchantment(stack, enchantment, level, true, true); player.sendMessage(message, true); } else if (player instanceof ServerPlayerEntity serverPlayerEntity) { diff --git a/src/main/java/de/dafuqs/spectrum/recipe/pedestal/dynamic/ExplosionModificationRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/pedestal/dynamic/ExplosionModificationRecipe.java index 63523d2d41..094723bcb6 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/pedestal/dynamic/ExplosionModificationRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/pedestal/dynamic/ExplosionModificationRecipe.java @@ -47,9 +47,11 @@ public boolean matches(Inventory inventory, World world) { ModularExplosionDefinition currentSet = ModularExplosionDefinition.getFromStack(nonModStack); List archetypes = pair.getLeft(); List mods = pair.getRight(); - + + // if there are no new modifiers to add present, treat it + // as a recipe to clear existing archetype and / or modifiers if (archetypes.isEmpty() && mods.isEmpty()) { - return currentSet.getModifierCount() > 0; // clearing existing modifiers + return currentSet.getArchetype() != ExplosionArchetype.COSMETIC || currentSet.getModifierCount() > 0; } if (!archetypes.isEmpty()) { @@ -69,10 +71,11 @@ public boolean matches(Inventory inventory, World world) { */ private static @Nullable ExplosionArchetype calculateExplosionArchetype(ExplosionArchetype existingArchetype, List newArchetypes) { ExplosionArchetype newArchetype = existingArchetype; - if (existingArchetype == ExplosionArchetype.ALL && newArchetypes.size() > 0) { + int newArchetypesCount = newArchetypes.size(); + if (existingArchetype == ExplosionArchetype.ALL && newArchetypesCount > 0) { return null; } - if (newArchetypes.contains(ExplosionArchetype.ALL) && newArchetypes.size() > 1) { + if (newArchetypes.contains(ExplosionArchetype.ALL) && newArchetypesCount > 1) { return null; } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/FermentationData.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/FermentationData.java index 12328004e3..9f7c8de74d 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/FermentationData.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/FermentationData.java @@ -15,7 +15,7 @@ public record FermentationData(float fermentationSpeedMod, float angelsSharePerc public static FermentationData fromJson(JsonObject jsonObject) { float fermentationSpeedMod = JsonHelper.getFloat(jsonObject, FERMENTATION_SPEED_MOD_STRING, 1.0F); - float angelsSharePerMcDay = JsonHelper.getFloat(jsonObject, ANGELS_SHARE_STRING, 0.1F); + float angelsSharePerMcDay = JsonHelper.getFloat(jsonObject, ANGELS_SHARE_STRING, 0.01F); List statusEffectEntries = new ArrayList<>(); if (JsonHelper.hasArray(jsonObject, EFFECTS_STRING)) { JsonArray effectsArray = JsonHelper.getArray(jsonObject, EFFECTS_STRING); diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/TitrationBarrelRecipeSerializer.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/TitrationBarrelRecipeSerializer.java index dbcdf3942c..fbb07d3e0b 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/TitrationBarrelRecipeSerializer.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/TitrationBarrelRecipeSerializer.java @@ -38,7 +38,7 @@ public TitrationBarrelRecipe read(Identifier identifier, JsonObject jsonObject) Identifier fluidIdentifier = Identifier.tryParse(JsonHelper.getString(jsonObject, "fluid")); fluid = Registry.FLUID.get(fluidIdentifier); if (fluid.getDefaultState().isEmpty()) { - SpectrumCommon.logError("Fusion Shrine Recipe " + identifier + " specifies fluid " + fluidIdentifier + " that does not exist! This recipe will not be craftable."); + SpectrumCommon.logError("Titration Recipe " + identifier + " specifies fluid " + fluidIdentifier + " that does not exist! This recipe will not be craftable."); } } diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/AquaRegiaRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/AquaRegiaRecipe.java index 7165a7c0f5..0e5411e679 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/AquaRegiaRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/AquaRegiaRecipe.java @@ -30,7 +30,7 @@ public class AquaRegiaRecipe extends SweetenableTitrationBarrelRecipe { }}; public AquaRegiaRecipe(Identifier identifier) { - super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(0.2F, 0.1F, List.of())); + super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(0.2F, 0.01F, List.of())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/JadeWineRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/JadeWineRecipe.java index 47b839d074..514e0e7e5d 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/JadeWineRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/JadeWineRecipe.java @@ -30,7 +30,7 @@ public class JadeWineRecipe extends SweetenableTitrationBarrelRecipe { }}; public JadeWineRecipe(Identifier identifier) { - super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(0.075F, 0.1F, List.of())); + super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(0.075F, 0.01F, List.of())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/NecteredViognierRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/NecteredViognierRecipe.java index bb25f305da..704088b639 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/NecteredViognierRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/NecteredViognierRecipe.java @@ -31,7 +31,7 @@ public class NecteredViognierRecipe extends SweetenableTitrationBarrelRecipe { }}; public NecteredViognierRecipe(Identifier identifier) { - super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(0.15F, 0.1F, List.of())); + super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(0.15F, 0.01F, List.of())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SuspiciousBrewRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SuspiciousBrewRecipe.java index e0bcd756a8..678770fda2 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SuspiciousBrewRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SuspiciousBrewRecipe.java @@ -35,7 +35,7 @@ public class SuspiciousBrewRecipe extends TitrationBarrelRecipe { }}; public SuspiciousBrewRecipe(Identifier identifier) { - super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(1.0F, 0.1F, List.of())); + super(identifier, "", false, UNLOCK_IDENTIFIER, INGREDIENT_STACKS, Fluids.WATER, OUTPUT_STACK, TAPPING_ITEM, MIN_FERMENTATION_TIME_HOURS, new FermentationData(1.0F, 0.01F, List.of())); } @Override diff --git a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SweetenableTitrationBarrelRecipe.java b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SweetenableTitrationBarrelRecipe.java index 4436e5dcdb..6f9fa6e505 100644 --- a/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SweetenableTitrationBarrelRecipe.java +++ b/src/main/java/de/dafuqs/spectrum/recipe/titration_barrel/dynamic/SweetenableTitrationBarrelRecipe.java @@ -45,7 +45,7 @@ protected ItemStack tapWith(int bulbCount, int petalCount, boolean nectar, float double bloominess = getBloominess(bulbCount, petalCount); float ageIngameDays = TimeHelper.minecraftDaysFromSeconds(secondsFermented); if (nectar) { - thickness *= 1.5; + thickness *= 1.5F; } double alcPercent = getAlcPercentWithBloominess(ageIngameDays, downfall, bloominess, thickness); if (alcPercent >= 100) { diff --git a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java index fe3e4c44c6..c87889c57c 100644 --- a/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java +++ b/src/main/java/de/dafuqs/spectrum/registries/SpectrumItems.java @@ -270,12 +270,13 @@ public Map getDefaultEnchantments() { public static final CloakedFloatItem PALTAERIA_FRAGMENTS = new CloakedFloatItem(Tab.RESOURCES.settings(), 0.997F, ((RevelationAware) SpectrumBlocks.PALTAERIA_ORE).getCloakAdvancementIdentifier(), Items.CYAN_DYE); public static final CloakedFloatItem PALTAERIA_GEM = new CloakedFloatItem(Tab.RESOURCES.settings(16), 0.98F, ((RevelationAware) SpectrumBlocks.PALTAERIA_ORE).getCloakAdvancementIdentifier(), Items.CYAN_DYE); public static final Item PYRITE_CHUNK = new Item(Tab.RESOURCES.settings()); - public static final Item DRAGONBONE_CHUNK = new Item(Tab.RESOURCES.settings(Rarity.UNCOMMON)); - public static final Item EFFULGENT_FEATHER = new Item(Tab.RESOURCES.settings(Rarity.UNCOMMON)); - public static final Item RAW_BLOODSTONE = new Item(Tab.RESOURCES.settings(Rarity.UNCOMMON)); - public static final Item REFINED_BLOODSTONE = new Item(Tab.RESOURCES.settings(Rarity.UNCOMMON)); - public static final Item DOWNSTONE_FRAGMENTS = new Item(Tab.RESOURCES.settings(16, Rarity.UNCOMMON)); - public static final Item RESONANCE_SHARD = new Item(Tab.RESOURCES.settings(16, Rarity.UNCOMMON)); + public static final Item DRAGONBONE_CHUNK = new CloakedItem(Tab.RESOURCES.settings(Rarity.UNCOMMON), SpectrumCommon.locate("lategame/break_cracked_dragonbone"), Items.GRAY_DYE); + public static final Item BONE_ASH = new CloakedItem(Tab.RESOURCES.settings(Rarity.UNCOMMON), SpectrumCommon.locate("lategame/break_cracked_dragonbone"), Items.GRAY_DYE); + public static final Item EFFULGENT_FEATHER = new CloakedItem(Tab.RESOURCES.settings(Rarity.UNCOMMON), SpectrumCommon.locate("lategame/pluck_effulgent_feather"), Items.RED_DYE); + public static final Item RAW_BLOODSTONE = new CloakedItem(Tab.RESOURCES.settings(Rarity.UNCOMMON), SpectrumCommon.locate("lategame/pluck_effulgent_feather"), Items.RED_DYE); + public static final Item REFINED_BLOODSTONE = new CloakedItem(Tab.RESOURCES.settings(Rarity.UNCOMMON), SpectrumCommon.locate("lategame/pluck_effulgent_feather"), Items.RED_DYE); + public static final Item DOWNSTONE_FRAGMENTS = new CloakedItem(Tab.RESOURCES.settings(16, Rarity.UNCOMMON), SpectrumCommon.locate("lategame/find_excavation_site"), Items.LIGHT_GRAY_DYE); + public static final Item RESONANCE_SHARD = new CloakedItem(Tab.RESOURCES.settings(16, Rarity.UNCOMMON), SpectrumCommon.locate("lategame/strike_up_hummingstone_hymn"), Items.LIGHT_BLUE_DYE); public static final Item QUITOXIC_POWDER = new CloakedItem(Tab.RESOURCES.settings(), ((RevelationAware) SpectrumBlocks.QUITOXIC_REEDS).getCloakAdvancementIdentifier(), Items.PURPLE_DYE); public static final Item STORM_STONE = new StormStoneItem(Tab.RESOURCES.settings(16), ((RevelationAware) SpectrumBlocks.STUCK_STORM_STONE).getCloakAdvancementIdentifier(), Items.YELLOW_DYE); @@ -292,7 +293,7 @@ public Map getDefaultEnchantments() { public static final Item JADEITE_LOTUS_BULB = new BlockItem(SpectrumBlocks.JADEITE_LOTUS_BULB, Tab.RESOURCES.settings(16)); public static final Item JADEITE_PETALS = new Item(Tab.RESOURCES.settings(Rarity.UNCOMMON)); - public static final Item BLOOD_ORCHID_PETAL = new Item(Tab.RESOURCES.settings()); + public static final Item BLOOD_ORCHID_PETAL = new CloakedItem(Tab.RESOURCES.settings(), SpectrumCommon.locate("solve_wireless_redstone_preservation_ruin"), Items.RED_DYE); public static final Item ROCK_CANDY = new RockCandyItem(Tab.CUISINE.settings().food(SpectrumFoodComponents.ROCK_CANDY), RockCandy.RockCandyVariant.SUGAR); public static final Item TOPAZ_ROCK_CANDY = new RockCandyItem(Tab.CUISINE.settings().food(SpectrumFoodComponents.TOPAZ_ROCK_CANDY), RockCandy.RockCandyVariant.TOPAZ); @@ -348,7 +349,7 @@ public Map getDefaultEnchantments() { public static final Item MONSTER_TRIFLE = new Item(Tab.CUISINE.settings().food(SpectrumFoodComponents.MONSTER_TRIFLE)); public static final Item DEMON_TRIFLE = new Item(Tab.CUISINE.settings().food(SpectrumFoodComponents.DEMON_TRIFLE)); - public static final Item MYCEYLON = new Item(Tab.CUISINE.settings()); + public static final Item MYCEYLON = new CloakedItem(Tab.CUISINE.settings(), SpectrumCommon.locate("lategame/collect_myceylon"), Items.ORANGE_DYE); public static final Item MYCEYLON_APPLE_PIE = new Item(Tab.CUISINE.settings().food(SpectrumFoodComponents.MYCEYLON_APPLE_PIE)); public static final Item MYCEYLON_PUMPKIN_PIE = new Item(Tab.CUISINE.settings().food(SpectrumFoodComponents.MYCEYLON_PUMPKIN_PIE)); public static final Item MYCEYLON_COOKIE = new Item(Tab.CUISINE.settings().food(SpectrumFoodComponents.MYCEYLON_COOKIE)); @@ -423,10 +424,9 @@ public Map getDefaultEnchantments() { public static final Item PERTURBED_EYE = new PerturbedEyeItem(Tab.EQUIPMENT.settings(Rarity.UNCOMMON)); public static final Item CRESCENT_CLOCK = new Item(Tab.EQUIPMENT.settings(1)); - public static final Item FIERY_POWDER = new Item(Tab.RESOURCES.settings()); - public static final Item BLIZZARD_POWDER = new Item(Tab.RESOURCES.settings()); - public static final Item BONE_ASH = new Item(Tab.RESOURCES.settings()); - public static final Item MOONSTONE_CORE = new Item(Tab.RESOURCES.settings(8, Rarity.RARE)); + public static final Item FIERY_POWDER = new CloakedItem(Tab.RESOURCES.settings(), SpectrumCommon.locate("midgame/spectrum_midgame"), Items.ORANGE_DYE); + public static final Item BLIZZARD_POWDER = new CloakedItem(Tab.RESOURCES.settings(), SpectrumCommon.locate("midgame/spectrum_midgame"), Items.LIGHT_BLUE_DYE); + public static final Item MOONSTONE_CORE = new CloakedItem(Tab.RESOURCES.settings(8, Rarity.RARE), SpectrumCommon.locate("lategame/collect_moonstone_core"), Items.WHITE_DYE); // Catkin public static final Item VIBRANT_CYAN_CATKIN = new CatkinItem(BuiltinGemstoneColor.CYAN, false, Tab.NONE.settings()); @@ -458,7 +458,7 @@ public Map getDefaultEnchantments() { // Lore public static final Item MYSTERIOUS_LOCKET = new MysteriousLocketItem(Tab.EQUIPMENT.settings(1, Rarity.UNCOMMON)); - public static final Item MYSTERIOUS_COMPASS = new StructureCompassItem(Tab.EQUIPMENT.settings(1, Rarity.RARE), SpectrumStructureTags.MYSTERIOUS_COMPASS_LOCATED); + public static final Item MYSTERIOUS_COMPASS = new MysteriousCompassItem(Tab.EQUIPMENT.settings(1, Rarity.RARE)); // Trinkets public static final Item FANCIFUL_BELT = new Item(Tab.EQUIPMENT.settings(16, Rarity.UNCOMMON)); @@ -645,6 +645,7 @@ public static void registerResources() { register("stratine_gem", STRATINE_GEM, DyeColor.RED); register("pyrite_chunk", PYRITE_CHUNK, DyeColor.PURPLE); register("dragonbone_chunk", DRAGONBONE_CHUNK, DyeColor.GRAY); + register("bone_ash", BONE_ASH, DyeColor.GRAY); register("effulgent_feather", EFFULGENT_FEATHER, DyeColor.YELLOW); register("raw_bloodstone", RAW_BLOODSTONE, DyeColor.RED); register("refined_bloodstone", REFINED_BLOODSTONE, DyeColor.RED); @@ -685,7 +686,6 @@ public static void registerResources() { register("fiery_powder", FIERY_POWDER, DyeColor.ORANGE); register("blizzard_powder", BLIZZARD_POWDER, DyeColor.LIGHT_BLUE); - register("bone_ash", BONE_ASH, DyeColor.GRAY); register("moonstone_core", MOONSTONE_CORE, DyeColor.WHITE); } diff --git a/src/main/resources/assets/spectrum/lang/en_us.json b/src/main/resources/assets/spectrum/lang/en_us.json index 2c67b70c79..852b9f05e0 100644 --- a/src/main/resources/assets/spectrum/lang/en_us.json +++ b/src/main/resources/assets/spectrum/lang/en_us.json @@ -1829,8 +1829,8 @@ "block.spectrum.incandescent_amalgam.tooltip.preview": "Gets more explosive with age", "item.spectrum.pipe_bomb": "Pipe Bomb", - "item.spectrum.pipe_bomb.tooltip": "Explodes! Nondestructive, but highly damaging", - "item.spectrum.pipe_bomb.tooltip2": "Use to prime", + "item.spectrum.pipe_bomb.tooltip": "Highly damaging & sets surroundings on fire", + "item.spectrum.pipe_bomb.tooltip2": "Use to Prime. Explodes after a few seconds!", "block.spectrum.parametric_mining_device": "Parametric Mining Device", "block.spectrum.parametric_mining_device.tooltip": "Explodes when thrown or attached to a wall", "block.spectrum.threat_conflux": "Threat Conflux", diff --git a/src/main/resources/assets/spectrum/models/block/jadeite_lotus_flower.json b/src/main/resources/assets/spectrum/models/block/jadeite_lotus_flower.json index 4050aa2a61..a62c9efbd3 100755 --- a/src/main/resources/assets/spectrum/models/block/jadeite_lotus_flower.json +++ b/src/main/resources/assets/spectrum/models/block/jadeite_lotus_flower.json @@ -1,10 +1,7 @@ { - "parent": "minecraft:block/block", "credit": "Made by Azazelthedemonlord ~ https://azazelthedemonlord.newgrounds.com/ ~ ♡", - "texture_size": [ - 32, - 32 - ], + "parent": "minecraft:block/block", + "texture_size": [32, 32], "textures": { "0": "spectrum:block/jadeite_lotus_flower_base", "1": "spectrum:block/jadeite_lotus_flower_lower_petals", @@ -194,5 +191,42 @@ "down": {"uv": [1.5, 16, 14.5, 6.5], "rotation": 90, "texture": "#2"} } } - ] + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.4, 0.4, 0.4] + }, + "gui": { + "rotation": [31, 225, 0], + "translation": [0, 1.25, 0], + "scale": [0.4, 0.4, 0.4] + }, + "head": { + "translation": [0, 15, 0] + }, + "fixed": { + "rotation": [-90, 225, 0], + "translation": [0, 0.5, -9.75], + "scale": [0.4, 0.4, 0.4] + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/spectrum/textures/gui/patchouli/liquid_crystal.png b/src/main/resources/assets/spectrum/textures/gui/patchouli/liquid_crystal.png index 92d3a5b87e..0a6b175679 100644 Binary files a/src/main/resources/assets/spectrum/textures/gui/patchouli/liquid_crystal.png and b/src/main/resources/assets/spectrum/textures/gui/patchouli/liquid_crystal.png differ diff --git a/src/main/resources/assets/spectrum/textures/gui/patchouli/mud.png b/src/main/resources/assets/spectrum/textures/gui/patchouli/mud.png new file mode 100644 index 0000000000..42ffe5acc8 Binary files /dev/null and b/src/main/resources/assets/spectrum/textures/gui/patchouli/mud.png differ diff --git a/src/main/resources/data/spectrum/advancements/midgame/tap_sweetened_jade_wine.json b/src/main/resources/data/spectrum/advancements/midgame/tap_sweetened_jade_wine.json index 0171370432..76cf0be7bd 100644 --- a/src/main/resources/data/spectrum/advancements/midgame/tap_sweetened_jade_wine.json +++ b/src/main/resources/data/spectrum/advancements/midgame/tap_sweetened_jade_wine.json @@ -20,12 +20,12 @@ { "items": [ "spectrum:jade_wine" - ] + ], + "nbt": { + "Sweetened": true + } } - ], - "nbt": { - "Sweetened": true - } + ] } }, "gotten_previous": { diff --git a/src/main/resources/data/spectrum/loot_tables/chests/city_below/seed_vault_upper.json b/src/main/resources/data/spectrum/loot_tables/chests/city_below/seed_vault_upper.json index f82fb5dd89..4d963017be 100644 --- a/src/main/resources/data/spectrum/loot_tables/chests/city_below/seed_vault_upper.json +++ b/src/main/resources/data/spectrum/loot_tables/chests/city_below/seed_vault_upper.json @@ -10,23 +10,7 @@ "entries": [ { "type": "minecraft:item", - "name": "minecraft:beetroot_seeds" - }, - { - "type": "minecraft:item", - "name": "minecraft:wheat_seeds" - }, - { - "type": "minecraft:item", - "name": "minecraft:melon_seeds" - }, - { - "type": "minecraft:item", - "name": "minecraft:pumpkin_seeds" - }, - { - "type": "minecraft:item", - "name": "spectrum:glistering_melon_seeds" + "name": "spectrum:pipe_bomb" } ], "functions": [ diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/creating_life/egg_laying_wooly_pig.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/creating_life/egg_laying_wooly_pig.json index d44e1a5834..95a6f40e4c 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/creating_life/egg_laying_wooly_pig.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/creating_life/egg_laying_wooly_pig.json @@ -25,7 +25,7 @@ "advancement": "spectrum:midgame/remember_egg_laying_wooly_pig", "title": "Remembering", "recipe": "spectrum:spirit_instiller/memories/egg_laying_wooly_pig", - "text": "$(l:resources/amaranth)Amaranth$(), did the trick!" + "text": "$(l:cuisine/amaranth)Amaranth$(), did the trick!" }, { "type": "patchouli:entity", diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/aloe.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/aloe.json similarity index 94% rename from src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/aloe.json rename to src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/aloe.json index 638640a217..db07c8fbaf 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/aloe.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/aloe.json @@ -2,7 +2,7 @@ "name": "Aloe", "advancement": "spectrum:hidden/collect_aloe", "icon": "spectrum:aloe_leaf", - "category": "spectrum:dimension_category", + "category": "spectrum:cuisine_category", "extra_recipe_mappings": { "spectrum:aloe_leaf": 0 }, diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/resources/amaranth.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/amaranth.json similarity index 97% rename from src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/resources/amaranth.json rename to src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/amaranth.json index 106eaaaabc..b5c10aec2c 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/resources/amaranth.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/amaranth.json @@ -2,7 +2,7 @@ "name": "Amaranth", "advancement": "spectrum:milestones/reveal_amaranth", "icon": "spectrum:amaranth_bushel", - "category": "spectrum:resources_category", + "category": "spectrum:cuisine_category", "extra_recipe_mappings": { "spectrum:amaranth_grains": 0, "spectrum:amaranth_bushel": 0, diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/brewers_handbook.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/brewers_handbook.json index 9c78d1dcab..3ee2490f9c 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/brewers_handbook.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/brewers_handbook.json @@ -54,6 +54,11 @@ "recipe": "spectrum:titration_barrel/bristle_mead", "text": "$(italic)Not a mead, no no no." }, + { + "type": "spectrum:titration_barrel_fermenting", + "recipe": "spectrum:titration_barrel/bristle_mead_fluid", + "text": "$(italic)Not a mead, no no no." + }, { "type": "patchouli:text", "title": "Heat for the Heart", diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/infused_beverages.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/infused_beverages.json index fce55b4ce5..57b0fc4244 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/infused_beverages.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/infused_beverages.json @@ -65,7 +65,7 @@ "advancement": "spectrum:unlocks/food/gin", "title": "Gin", "recipe": "spectrum:titration_barrel/infused_beverages/gin", - "text": "Made from $(l:resources/amaranth)Amaranth$(/l), grants $(thing)Luck$() and $(thing)Haste$()." + "text": "Made from $(l:cuisine/amaranth)Amaranth$(/l), grants $(thing)Luck$() and $(thing)Haste$()." }, { "type": "spectrum:titration_barrel_fermenting", @@ -79,6 +79,7 @@ "advancement": "spectrum:milestones/confirmed_drinking_age", "title": "Mead", "recipe": "spectrum:titration_barrel/infused_beverages/mead", + "recipe2": "spectrum:titration_barrel/infused_beverages/mead_fluid", "text": "The large amount of sugar in honey is perfect for fermentation. The result is a strong, although still sweet drink." }, { diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/lucky_roll.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/lucky_roll.json index 4b714ebec6..bdc0fb22f8 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/lucky_roll.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/lucky_roll.json @@ -9,7 +9,7 @@ "pages": [ { "type": "patchouli:text", - "text": "Are you going to become a pastry chef after all, in addition to your main job as an artist? These don't even look that bad (taste good too!).$(br2)Composed of $(l:resources/amaranth)Amaranth$(/l), $(item)Sugar$(), $(item)Milk$(), and a $(l:resources/clover)Four-Leafed Clover$(), it has a very special effect: you noticed that you were a little bit more successful handling tools with Fortune, Looting and other random-based things." + "text": "Are you going to become a pastry chef after all, in addition to your main job as an artist? These don't even look that bad (taste good too!).$(br2)Composed of $(l:cuisine/amaranth)Amaranth$(/l), $(item)Sugar$(), $(item)Milk$(), and a $(l:resources/clover)Four-Leafed Clover$(), it has a very special effect: you noticed that you were a little bit more successful handling tools with Fortune, Looting and other random-based things." }, { "type": "spectrum:pedestal_crafting", diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/myceylon.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/myceylon.json similarity index 77% rename from src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/myceylon.json rename to src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/myceylon.json index 5afb4bae51..fa018da052 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/myceylon.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/myceylon.json @@ -2,7 +2,7 @@ "name": "Myceylon", "advancement": "spectrum:lategame/collect_myceylon", "icon": "spectrum:myceylon", - "category": "spectrum:dimension_category", + "category": "spectrum:cuisine_category", "extra_recipe_mappings": { "spectrum:myceylon": 0, "spectrum:myceylon_apple_pie": 0, @@ -13,11 +13,7 @@ { "type": "patchouli:text", "title": "Myceylon", - "text": "Using an $(item)Axe$() or $(l:equipment/multitool)Multitool$() you could strip small, but unexpectedly sturdy pieces off the $(l:dimension/noxshroom_forest)Noxshrooms$(). Those were both unexpectedly sturdy for a mushroom and... tasty." - }, - { - "type": "patchouli:text", - "text": "Myceylon adds great flavor to baked goods and $(l:cuisine/infused_beverage)drinks$().$(br2)$(italic)Why would you peel Mushrooms?$(br)So you can enjoy the peel later, of course." + "text": "Using an $(item)Axe$() or $(l:equipment/multitool)Multitool$() you could strip small, but unexpectedly sturdy pieces off the $(l:dimension/noxshroom_forest)Noxshrooms$(). Those were both unexpectedly sturdy for a mushroom and... tasty.$(br2)Myceylon adds great flavor to baked goods and $(l:cuisine/infused_beverages)drinks$()." }, { "type": "spectrum:pedestal_crafting", diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/sawblade_holly.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/sawblade_holly.json similarity index 96% rename from src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/sawblade_holly.json rename to src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/sawblade_holly.json index 9e3e0b195c..aadab21f89 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/dimension/sawblade_holly.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/sawblade_holly.json @@ -2,7 +2,7 @@ "name": "Sawblade Holly", "advancement": "spectrum:lategame/collect_prickly_bayleaf", "icon": "spectrum:prickly_bayleaf", - "category": "spectrum:dimension_category", + "category": "spectrum:cuisine_category", "extra_recipe_mappings": { "spectrum:prickly_bayleaf": 0, "spectrum:sawblade_holly_berry": 0, diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/trifles.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/trifles.json index 3357de9ac3..cfa5c5e761 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/trifles.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/cuisine/trifles.json @@ -11,7 +11,7 @@ "pages": [ { "type": "patchouli:text", - "text": "Sweet delicacies, guaranteed to not only give you a sugar rush - depending on the toppings.$(br)Made from $(l:resources/jade_vines#jaramel)Jaramel$(/l), $(thing)Gelatin$() & $(l:resources/amaranth)Amaranth$(/l).$(br)Even the simple one tastes great!" + "text": "Sweet delicacies, guaranteed to not only give you a sugar rush - depending on the toppings.$(br)Made from $(l:resources/jade_vines#jaramel)Jaramel$(/l), $(thing)Gelatin$() & $(l:cuisine/amaranth)Amaranth$(/l).$(br)Even the simple one tastes great!" }, { "type": "spectrum:pedestal_crafting", diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/equipment/glass_crest_tools.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/equipment/glass_crest_tools.json index b988261a34..e9c6d68fc1 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/equipment/glass_crest_tools.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/equipment/glass_crest_tools.json @@ -42,7 +42,7 @@ "title": "Ferocious Bident", "advancement": "spectrum:unlocks/malachite/ferocious_glass_crest_bident", "recipe": "spectrum:fusion_shrine/malachite/ferocious_glass_crest_bident", - "text": "What happens when you combine $(thing)Riptide$() with a Pocket Thunderstorm? Lets you hurl yourself into the air and damage everything in your path, even in the driest of deserts - as long as you don't run out of ink.$(br)$(italic)Flying isn't the problem. Landing is.$()" + "text": "The result of combining a Bident and a Pocket Thunderstorm. Hurl yourself into the air and damage everything in your path, even in the driest of deserts! ...as long as you don't run out of ink (scales with the level of Riptide). $(italic)Flying isn't the problem. Landing is.$()" }, { "type": "spectrum:fusion_shrine_crafting", diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/modular_explosives.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/modular_explosives.json index cd82b898bd..57935ebab0 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/modular_explosives.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/modular_explosives.json @@ -11,12 +11,12 @@ { "type": "patchouli:text", "title": "Modular Explosives", - "text": "Highly modular explosives, consisting of an Archetype (damaging entities, destroying blocks, both, or just purely cosmetic) and a list of modifiers.$(br2)A Modifier can be the lighting of fire, changing the explosions damage type, increasing the blast radius, damage or something else entirely." + "text": "Highly modular explosives, consisting of:$(li)an $(thing)Archetype$() (damaging entities, destroying blocks, both, or just purely cosmetic)$(li)and $(thing)Modifiers$() (changing the damage type, lighting fire, increasing the blast radius, damage and much more)" }, { "type": "patchouli:text", - "title": "How to Customize", - "text": "Modular Explosives come with a suitable archetype builtin. Though if you want to change it, simply put it into the $(l:general/pedestal)Pigment Pedestal$() to clear both Archetype and Modifiers and start from scratch.$(br)Then craft that blank slate together with items specifying a new Archetype and Modifiers.$(br2)You can customize a whole stack of explosives at once." + "title": "Customization", + "text": "Use the $(l:general/pedestal)Pigment Pedestal$() to combine a Modular Explosive with items specifying Archetype and to add Modifiers.$(br2)You can customize a whole stack of explosives at once." }, { "type": "spectrum:pedestal_crafting", @@ -30,23 +30,33 @@ }, { "type": "patchouli:text", - "title": "Available Archetypes", - "text": "$(li)Glowstone Dust: Damaging Creatures$(li)Gunpowder: Destroying Blocks$(li)Midnight Aberration: Both" + "title": "Archetypes", + "text": "$(li)Gunpowder: Destroying Blocks$(li)Glowstone Dust: Dealing Damage$(li)Midnight Aberration: Both$(br2)You can also combine both separately." }, { "type": "patchouli:text", - "title": "General Modifiers", - "text": "$(li)Fire Charge: Fire$(li)TNT: Higher explosion radius$(li)Doombloom Seed: Primordial Fire$(li)Chorus Fruit: Starry Particles$(li)Shimmerstone: Placing invisible lights" + "title": "General Mod. (∞)", + "text": "$(li)TNT: Increased radius$(li)Chorus Fruit: Starry Particles$(li)Shimmerstone: Placement of invisible lights" }, { "type": "patchouli:text", - "title": "Damage Modifiers", - "text": "$(li)Storm Stone: Lightning Damage$(li)Neolith: Magic Damage$(li)Incandescent Amalgam: Incandescent Damage$(li)End Rod: Increased damage near explosion center" + "title": "Damage Type Mod. (1)", + "text": "$(li)Fire Charge: Fire$(li)Doombloom Seed: Primordial Fire$(li)Storm Stone: Lightning Damage$(li)Neolith: Magic Damage$(li)Incandescent Amalgam: Incandescent Damage" }, { "type": "patchouli:text", - "title": "Mining Modifiers", + "title": "Damage Mod. (∞)", + "text": "$(li)End Rod: Greatly increased damage when near explosion center" + }, + { + "type": "patchouli:text", + "title": "Mining Mod. (∞)", "text": "$(li)Stratine Fragments: Square block breaking shape$(li)Four Leaf Clover: Fortune$(li)Mermaids Gem: Silk Touch$(li)Ender Pearl: Inventory Insertion" + }, + { + "type": "patchouli:text", + "title": "Starting from Scratch", + "text": "Modular Explosives come with a suitable archetype builtin. Though if you want to change that, put it into the $(l:general/pedestal)Pigment Pedestal$() to $(thing)clear both Archetype and Modifiers$() and start from scratch." } ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/mud.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/mud.json index cf84dd6647..451d1d9e21 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/mud.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/magical_blocks/mud.json @@ -8,8 +8,8 @@ }, "pages": [ { - "title": "Liquid Mud", "type": "patchouli:spotlight", + "title": "Liquid Mud", "item": "spectrum:mud_bucket", "text": "Mud. It is wet mud. Not particularly interesting in itself. What is practical is the collision of the mud with other liquids, like $(item)Water$() or $(item)Lava$(). This creates $(item)Dirt$() or $(item)Coarse Dirt$(), respectively." }, @@ -18,6 +18,17 @@ "title": "Pedestal Recipe", "recipe": "spectrum:pedestal/tier1/mud_bucket", "text": "$(italic)While a mud bath sounds like wellness, it is not advised." + }, + { + "type": "patchouli:text", + "title": "Item Conversion", + "text": "Some items that come into contact with Mud get tanned.$(br)For example, $(item)Rotten Flesh$() will be converted to a tiny piece of $(item)Hide$()." + }, + { + "type": "spectrum:mud_converting", + "title": "Tanning Rotten Flesh", + "recipe": "spectrum:mud_converting/rabbit_hide", + "text": "" } ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/mod_integration/create.json b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/mod_integration/create.json index d11d19a5e6..2b1e7c3cef 100644 --- a/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/mod_integration/create.json +++ b/src/main/resources/data/spectrum/patchouli_books/guidebook/en_us/entries/mod_integration/create.json @@ -42,7 +42,7 @@ "title": "Milling Amaranth", "advancement": "spectrum:collect_amaranth_bushel", "item": "spectrum:amaranth_bushel", - "text": "$(l:resources/amaranth)Amaranth$() can be milled into grains." + "text": "$(l:cuisine/amaranth)Amaranth$() can be milled into grains." }, { "type": "patchouli:spotlight", diff --git a/src/main/resources/data/spectrum/recipes/mud_converting/rabit_hide.json b/src/main/resources/data/spectrum/recipes/mud_converting/rabbit_hide.json similarity index 78% rename from src/main/resources/data/spectrum/recipes/mud_converting/rabit_hide.json rename to src/main/resources/data/spectrum/recipes/mud_converting/rabbit_hide.json index 6edb1b511b..645e125fde 100644 --- a/src/main/resources/data/spectrum/recipes/mud_converting/rabit_hide.json +++ b/src/main/resources/data/spectrum/recipes/mud_converting/rabbit_hide.json @@ -1,7 +1,7 @@ { "type": "spectrum:mud_converting", "ingredient": { - "item": "minecraft:leather" + "item": "minecraft:rotten_flesh" }, "result": { "item": "minecraft:rabbit_hide", diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_apple_pie.json b/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_apple_pie.json index 0e0110f71c..19fbda8c3a 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_apple_pie.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_apple_pie.json @@ -18,7 +18,7 @@ "item": "spectrum:myceylon" }, "M": { - "tag": "c:milks" + "tag": "c:milk" }, "S": { "item": "minecraft:sugar" diff --git a/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_pumpkin_pie.json b/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_pumpkin_pie.json index 18e0a18a0a..7a0e2d2d64 100644 --- a/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_pumpkin_pie.json +++ b/src/main/resources/data/spectrum/recipes/pedestal/tier1/food/myceylon_pumpkin_pie.json @@ -18,7 +18,7 @@ "item": "spectrum:myceylon" }, "M": { - "tag": "c:milks" + "tag": "c:milk" }, "S": { "item": "minecraft:sugar" diff --git a/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead.json b/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead.json index fec79f5250..88c2bf0cec 100644 --- a/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead.json +++ b/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead.json @@ -109,5 +109,16 @@ "item": "spectrum:bristle_mead", "count": 4 }, - "required_advancement": "spectrum:hidden/collect_cookbooks/brewers_handbook" + "required_advancement": "spectrum:hidden/collect_cookbooks/brewers_handbook", + "fabric:load_conditions": [ + { + "condition": "fabric:not", + "value": { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead_fluid.json b/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead_fluid.json new file mode 100644 index 0000000000..968cef8638 --- /dev/null +++ b/src/main/resources/data/spectrum/recipes/titration_barrel/bristle_mead_fluid.json @@ -0,0 +1,117 @@ +{ + "type": "spectrum:titration_barrel", + "ingredients": [ + { + "item": "spectrum:sawblade_holly_berry", + "count": 4 + }, + { + "item": "spectrum:bristle_sprouts", + "count": 8 + }, + { + "item": "spectrum:jaramel", + "count": 2 + } + ], + "fluid": "create:honey", + "min_fermentation_time_hours": 24, + "fermentation_data": { + "fermentation_speed_mod": 0.25, + "effects": [ + { + "id": "minecraft:fire_resistance", + "base_duration": 9600, + "potency": [ + { + "potency": 0 + } + ] + }, + { + "id": "minecraft:speed", + "base_duration": 9600, + "potency": [ + { + "potency": 0 + }, + { + "min_alc": 20, + "potency": 1 + }, + { + "min_alc": 25, + "potency": 2 + }, + { + "min_alc": 30, + "potency": 3 + } + ] + }, + { + "id": "minecraft:strength", + "base_duration": 9600, + "potency": [ + { + "min_alc": 25, + "min_thickness": 1.5 + }, + { + "min_alc": 25, + "min_thickness": 2.0, + "potency": 1 + }, + { + "min_alc": 25, + "min_thickness": 2.5, + "potency": 2 + } + ] + }, + { + "id": "minecraft:slowness", + "base_duration": 9600, + "potency": [ + { + "min_thickness": 2 + }, + { + "min_thickness": 3, + "potency": 1 + }, + { + "min_thickness": 4, + "potency": 2 + } + ] + }, + { + "id": "minecraft:blindness", + "base_duration": 600, + "potency": [ + { + "min_thickness": 3 + }, + { + "min_alc": 30 + } + ] + } + ] + }, + "tapping_item": "minecraft:glass_bottle", + "result": { + "item": "spectrum:bristle_mead", + "count": 4 + }, + "required_advancement": "spectrum:hidden/collect_cookbooks/brewers_handbook", + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead.json b/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead.json index 6d773d11d5..d4e5836787 100644 --- a/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead.json +++ b/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead.json @@ -102,5 +102,16 @@ "Color": 16757819 } }, - "required_advancement": "spectrum:milestones/confirmed_drinking_age" + "required_advancement": "spectrum:milestones/confirmed_drinking_age", + "fabric:load_conditions": [ + { + "condition": "fabric:not", + "value": { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead_fluid.json b/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead_fluid.json new file mode 100644 index 0000000000..4ee564c3c2 --- /dev/null +++ b/src/main/resources/data/spectrum/recipes/titration_barrel/infused_beverages/mead_fluid.json @@ -0,0 +1,114 @@ +{ + "type": "spectrum:titration_barrel", + "group": "infused_beverages", + "ingredients": [ + { + "item": "minecraft:honeycomb", + "count": 2 + } + ], + "fluid": "create:honey", + "tapping_item": "minecraft:glass_bottle", + "min_fermentation_time_hours": 24, + "fermentation_data": { + "fermentation_speed_mod": 0.25, + "effects": [ + { + "id": "minecraft:fire_resistance", + "base_duration": 9600, + "potency": [ + { + "potency": 0 + } + ] + }, + { + "id": "minecraft:speed", + "base_duration": 9600, + "potency": [ + { + "potency": 0 + }, + { + "min_alc": 20, + "potency": 1 + }, + { + "min_alc": 25, + "potency": 2 + }, + { + "min_alc": 30, + "potency": 3 + } + ] + }, + { + "id": "minecraft:strength", + "base_duration": 9600, + "potency": [ + { + "min_alc": 25, + "min_thickness": 1.5 + }, + { + "min_alc": 25, + "min_thickness": 2.0, + "potency": 1 + }, + { + "min_alc": 25, + "min_thickness": 2.5, + "potency": 2 + } + ] + }, + { + "id": "minecraft:slowness", + "base_duration": 9600, + "potency": [ + { + "min_thickness": 2 + }, + { + "min_thickness": 3, + "potency": 1 + }, + { + "min_thickness": 4, + "potency": 2 + } + ] + }, + { + "id": "minecraft:blindness", + "base_duration": 600, + "potency": [ + { + "min_thickness": 3 + }, + { + "min_alc": 30 + } + ] + } + ] + }, + "result": { + "item": "spectrum:infused_beverage", + "count": 4, + "nbt": { + "Variant": "mead", + "Color": 16757819 + } + }, + "required_advancement": "spectrum:milestones/confirmed_drinking_age", + "fabric:load_conditions": [ + { + "condition": "fabric:all_mods_loaded", + "values": [ + "create" + ] + } + ] +} \ No newline at end of file